Messages in this thread Patch in this message | | | From | Bjorn Helgaas <> | Subject | [PATCH] let binfmt_misc optionally preserve argv[1] | Date | Mon, 16 Dec 2002 12:17:54 -0700 |
| |
[This patch applies to 2.4.20 and is due to David Mosberger]
This makes it possible for binfmt_misc to optionally preserve the contents of argv[1]. This is needed for building accurate simulators which are invoked via binfmt_misc. I had brought up this patch a while ago (see URL below) and there was no negative feedback (OK, there was no feedback at all... ;-).
The patch is trivial and the new behavior is triggered only if the letter "P" (for "preserve") is appended to the binfmt_misc registration string, so it shold be completely safe.
http://groups.google.com/groups?q=mosberger+binfmt_misc&hl=en&lr=&ie=UTF-8&oe=UTF-8&selm=200209092241.g89MfPS5001013%40napali.hpl.hp.com&rnum=1
diff -Nru a/fs/binfmt_misc.c b/fs/binfmt_misc.c --- a/fs/binfmt_misc.c Mon Dec 16 12:06:58 2002 +++ b/fs/binfmt_misc.c Mon Dec 16 12:06:58 2002 @@ -35,6 +35,7 @@ static int enabled = 1; enum {Enabled, Magic}; +#define MISC_FMT_PRESERVE_ARGV0 (1<<31) typedef struct { struct list_head list; @@ -121,7 +122,9 @@ bprm->file = NULL; /* Build args for interpreter */ - remove_arg_zero(bprm); + if (!(fmt->flags & MISC_FMT_PRESERVE_ARGV0)) { + remove_arg_zero(bprm); + } retval = copy_strings_kernel(1, &bprm->filename, bprm); if (retval < 0) goto _ret; bprm->argc++; @@ -286,6 +289,11 @@ *p++ = '\0'; if (!e->interpreter[0]) goto Einval; + + if (*p == 'P') { + p++; + e->flags |= MISC_FMT_PRESERVE_ARGV0; + } if (*p == '\n') p++; - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |