X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fx86_64%2Fia32%2Fia32_aout.c;h=fe6bae25eb2201bf0815b852525904465c879bc2;hb=9bf4aaab3e101692164d49b7ca357651eb691cb6;hp=b7b698c68cad7efdfcd7ad1bc3e9f198ad7a595b;hpb=db216c3d5e4c040e557a50f8f5d35d5c415e8c1c;p=linux-2.6.git diff --git a/arch/x86_64/ia32/ia32_aout.c b/arch/x86_64/ia32/ia32_aout.c index b7b698c68..fe6bae25e 100644 --- a/arch/x86_64/ia32/ia32_aout.c +++ b/arch/x86_64/ia32/ia32_aout.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include @@ -216,18 +217,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); @@ -404,7 +406,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));