aboutsummaryrefslogtreecommitdiffstats
path: root/fs/binfmt_flat.c
diff options
context:
space:
mode:
authorGreg Ungerer <gerg@snapgear.com>2006-01-10 01:59:37 -0500
committerLinus Torvalds <torvalds@g5.osdl.org>2006-01-10 12:31:27 -0500
commit845884d332c060b0dfc54ba5a580d0f1a99c58a2 (patch)
treeda786d4435001105f36d903b532a165e2bae5462 /fs/binfmt_flat.c
parent082f2c1cc7aa7aabdbf5235b788ff42e10abb399 (diff)
[PATCH] uclinux: delay binfmt_flat trace
Modify the initial trace output (which is based on flags in the binary header) so that it is not done until after the magic number check. This may well not be a flat format binary, so the flags could be invalid. (Prime example, running a script). Changes prompted by patches from Stuart Hughs. Signed-off-by: Greg Ungerer <gerg@uclinux.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'fs/binfmt_flat.c')
-rw-r--r--fs/binfmt_flat.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/fs/binfmt_flat.c b/fs/binfmt_flat.c
index b72dc31a0970..108d56bbd0d0 100644
--- a/fs/binfmt_flat.c
+++ b/fs/binfmt_flat.c
@@ -442,19 +442,22 @@ static int load_flat_file(struct linux_binprm * bprm,
442 flags = ntohl(hdr->flags); 442 flags = ntohl(hdr->flags);
443 rev = ntohl(hdr->rev); 443 rev = ntohl(hdr->rev);
444 444
445 if (flags & FLAT_FLAG_KTRACE) 445 if (strncmp(hdr->magic, "bFLT", 4)) {
446 printk("BINFMT_FLAT: Loading file: %s\n", bprm->filename);
447
448 if (strncmp(hdr->magic, "bFLT", 4) ||
449 (rev != FLAT_VERSION && rev != OLD_FLAT_VERSION)) {
450 /* 446 /*
451 * because a lot of people do not manage to produce good 447 * because a lot of people do not manage to produce good
452 * flat binaries, we leave this printk to help them realise 448 * flat binaries, we leave this printk to help them realise
453 * the problem. We only print the error if its not a script file 449 * the problem. We only print the error if its not a script file
454 */ 450 */
455 if (strncmp(hdr->magic, "#!", 2)) 451 if (strncmp(hdr->magic, "#!", 2))
456 printk("BINFMT_FLAT: bad magic/rev (0x%x, need 0x%x)\n", 452 printk("BINFMT_FLAT: bad header magic\n");
457 rev, (int) FLAT_VERSION); 453 return -ENOEXEC;
454 }
455
456 if (flags & FLAT_FLAG_KTRACE)
457 printk("BINFMT_FLAT: Loading file: %s\n", bprm->filename);
458
459 if (rev != FLAT_VERSION && rev != OLD_FLAT_VERSION) {
460 printk("BINFMT_FLAT: bad flat file version 0x%x (supported 0x%x and 0x%x)\n", rev, FLAT_VERSION, OLD_FLAT_VERSION);
458 return -ENOEXEC; 461 return -ENOEXEC;
459 } 462 }
460 463