diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2000-02-18 00:24:27 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2000-02-18 00:24:27 +0000 |
commit | b9558d5f86c471a125abf1fb3a3882fb053b1f8c (patch) | |
tree | 707b53ec64e740a7da87d5f36485e3cd9b1c794e /arch/sparc64/kernel/binfmt_aout32.c | |
parent | b3ac367c7a3e6047abe74817db27e34e759f279f (diff) |
Merge with Linux 2.3.41.
Diffstat (limited to 'arch/sparc64/kernel/binfmt_aout32.c')
-rw-r--r-- | arch/sparc64/kernel/binfmt_aout32.c | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/arch/sparc64/kernel/binfmt_aout32.c b/arch/sparc64/kernel/binfmt_aout32.c index cbbb3557b..009c506a0 100644 --- a/arch/sparc64/kernel/binfmt_aout32.c +++ b/arch/sparc64/kernel/binfmt_aout32.c @@ -30,16 +30,16 @@ #include <asm/system.h> #include <asm/uaccess.h> -#include <asm/pgtable.h> +#include <asm/pgalloc.h> static int load_aout32_binary(struct linux_binprm *, struct pt_regs * regs); static int load_aout32_library(int fd); -static int aout32_core_dump(long signr, struct pt_regs * regs); +static int aout32_core_dump(long signr, struct pt_regs * regs, struct file *file); extern void dump_thread(struct pt_regs *, struct user *); static struct linux_binfmt aout32_format = { - NULL, NULL, load_aout32_binary, load_aout32_library, aout32_core_dump, + NULL, THIS_MODULE, load_aout32_binary, load_aout32_library, aout32_core_dump, PAGE_SIZE }; @@ -214,7 +214,6 @@ static inline int do_load_aout32_binary(struct linux_binprm * bprm, struct file * file; int fd; unsigned long error; - unsigned long p = bprm->p; unsigned long fd_offset; unsigned long rlim; int retval; @@ -275,9 +274,13 @@ static inline int do_load_aout32_binary(struct linux_binprm * bprm, read_exec(bprm->dentry, fd_offset, (char *) N_TXTADDR(ex), ex.a_text+ex.a_data, 0); } else { + static unsigned long error_time; if ((ex.a_text & 0xfff || ex.a_data & 0xfff) && - (N_MAGIC(ex) != NMAGIC)) + (N_MAGIC(ex) != NMAGIC) && (jiffies-error_time) > 5*HZ) + { printk(KERN_NOTICE "executable not page aligned\n"); + error_time = jiffies; + } fd = open_dentry(bprm->dentry, O_RDONLY); if (fd < 0) @@ -285,7 +288,7 @@ static inline int do_load_aout32_binary(struct linux_binprm * bprm, file = fget(fd); if (!file->f_op || !file->f_op->mmap) { - fput(fd); + fput(file); sys_close(fd); do_brk(0, ex.a_text+ex.a_data); read_exec(bprm->dentry, fd_offset, @@ -452,8 +455,17 @@ load_aout32_library(int fd) return retval; } - -int __init init_aout32_binfmt(void) +static int __init init_aout32_binfmt(void) { return register_binfmt(&aout32_format); } + +static void __exit exit_aout32_binfmt(void) +{ + unregister_binfmt(&aout32_format); +} + +EXPORT_NO_SYMBOLS; + +module_init(init_aout32_binfmt); +module_exit(exit_aout32_binfmt); |