diff options
| -rw-r--r-- | arch/sparc64/kernel/binfmt_aout32.c | 21 | ||||
| -rw-r--r-- | arch/x86_64/ia32/ia32_aout.c | 15 |
2 files changed, 19 insertions, 17 deletions
diff --git a/arch/sparc64/kernel/binfmt_aout32.c b/arch/sparc64/kernel/binfmt_aout32.c index 580a8c5d2706..dc46293c0c0c 100644 --- a/arch/sparc64/kernel/binfmt_aout32.c +++ b/arch/sparc64/kernel/binfmt_aout32.c @@ -112,9 +112,9 @@ static int aout32_core_dump(long signr, struct pt_regs *regs, struct file *file) /* make sure we actually have a data and stack area to dump */ set_fs(USER_DS); - if (verify_area(VERIFY_READ, (void *) START_DATA(dump), dump.u_dsize)) + if (verify_area(VERIFY_READ, (void __user *) START_DATA(dump), dump.u_dsize)) dump.u_dsize = 0; - if (verify_area(VERIFY_READ, (void *) START_STACK(dump), dump.u_ssize)) + if (verify_area(VERIFY_READ, (void __user *) START_STACK(dump), dump.u_ssize)) dump.u_ssize = 0; set_fs(KERNEL_DS); @@ -148,24 +148,25 @@ end_coredump: * addresses on the "stack", returning the new stack pointer value. */ -static u32 *create_aout32_tables(char * p, struct linux_binprm * bprm) +static u32 __user *create_aout32_tables(char __user *p, struct linux_binprm *bprm) { - u32 *argv, *envp; - u32 *sp; + u32 __user *argv; + u32 __user *envp; + u32 __user *sp; int argc = bprm->argc; int envc = bprm->envc; - sp = (u32 *) ((-(unsigned long)sizeof(char *)) & (unsigned long) p); + sp = (u32 __user *)((-(unsigned long)sizeof(char *))&(unsigned long)p); /* This imposes the proper stack alignment for a new process. */ - sp = (u32 *) (((unsigned long) sp) & ~7); + sp = (u32 __user *) (((unsigned long) sp) & ~7); if ((envc+argc+3)&1) --sp; sp -= envc+1; - envp = (u32 *) sp; + envp = sp; sp -= argc+1; - argv = (u32 *) sp; + argv = sp; put_user(argc,--sp); current->mm->arg_start = (unsigned long) p; while (argc-->0) { @@ -319,7 +320,7 @@ beyond_if: } current->mm->start_stack = - (unsigned long) create_aout32_tables((char *)bprm->p, bprm); + (unsigned long) create_aout32_tables((char __user *)bprm->p, bprm); if (!(orig_thr_flags & _TIF_32BIT)) { unsigned long pgd_cache; diff --git a/arch/x86_64/ia32/ia32_aout.c b/arch/x86_64/ia32/ia32_aout.c index 040adf6991a2..040e56f759e7 100644 --- a/arch/x86_64/ia32/ia32_aout.c +++ b/arch/x86_64/ia32/ia32_aout.c @@ -216,18 +216,19 @@ end_coredump: * memory and creates the pointer tables from them, and puts their * addresses on the "stack", returning the new stack pointer value. */ -static u32 * create_aout_tables(char * p, struct linux_binprm * bprm) +static u32 __user *create_aout_tables(char __user *p, struct linux_binprm *bprm) { - u32 *argv, *envp; - u32 * sp; + u32 __user *argv; + u32 __user *envp; + u32 __user *sp; int argc = bprm->argc; int envc = bprm->envc; - sp = (u32 *) ((-(unsigned long)sizeof(u32)) & (unsigned long) p); + sp = (u32 __user *) ((-(unsigned long)sizeof(u32)) & (unsigned long) p); sp -= envc+1; - envp = (u32 *) sp; + envp = sp; sp -= argc+1; - argv = (u32 *) sp; + argv = sp; put_user((unsigned long) envp,--sp); put_user((unsigned long) argv,--sp); put_user(argc,--sp); @@ -403,7 +404,7 @@ beyond_if: } current->mm->start_stack = - (unsigned long) create_aout_tables((char *) bprm->p, bprm); + (unsigned long)create_aout_tables((char __user *)bprm->p, bprm); /* start thread */ asm volatile("movl %0,%%fs" :: "r" (0)); \ asm volatile("movl %0,%%es; movl %0,%%ds": :"r" (__USER32_DS)); |
