X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=fs%2Fbinfmt_aout.c;h=3389c4f69fbaa9e799bbf0e78533a2b255f31c0f;hb=1be35e94e1da3669db492995cd2c8b1a37016b11;hp=59d1feb403c72fc95f7f67b0a5ac44eaf9726498;hpb=a91482bdcc2e0f6035702e46f1b99043a0893346;p=linux-2.6.git diff --git a/fs/binfmt_aout.c b/fs/binfmt_aout.c index 59d1feb40..3389c4f69 100644 --- a/fs/binfmt_aout.c +++ b/fs/binfmt_aout.c @@ -24,7 +24,6 @@ #include #include #include -#include #include #include @@ -308,8 +307,9 @@ static int load_aout_binary(struct linux_binprm * bprm, struct pt_regs * regs) (current->mm->start_data = N_DATADDR(ex)); current->mm->brk = ex.a_bss + (current->mm->start_brk = N_BSSADDR(ex)); - current->mm->free_area_cache = current->mm->mmap_base; - + current->mm->free_area_cache = TASK_UNMAPPED_BASE; + /* unlimited stack is larger than TASK_SIZE */ + current->mm->non_executable_cache = current->mm->mmap_top; // current->mm->rss = 0; vx_rsspages_sub(current->mm, current->mm->rss); current->mm->mmap = NULL; @@ -350,8 +350,7 @@ static int load_aout_binary(struct linux_binprm * bprm, struct pt_regs * regs) return error; } - error = bprm->file->f_op->read(bprm->file, - (char __user *)text_addr, + error = bprm->file->f_op->read(bprm->file, (char *)text_addr, ex.a_text+ex.a_data, &pos); if ((signed long)error < 0) { send_sig(SIGKILL, current, 0); @@ -380,8 +379,7 @@ static int load_aout_binary(struct linux_binprm * bprm, struct pt_regs * regs) if (!bprm->file->f_op->mmap||((fd_offset & ~PAGE_MASK) != 0)) { loff_t pos = fd_offset; do_brk(N_TXTADDR(ex), ex.a_text+ex.a_data); - bprm->file->f_op->read(bprm->file, - (char __user *)N_TXTADDR(ex), + bprm->file->f_op->read(bprm->file,(char *)N_TXTADDR(ex), ex.a_text+ex.a_data, &pos); flush_icache_range((unsigned long) N_TXTADDR(ex), (unsigned long) N_TXTADDR(ex) + @@ -483,7 +481,7 @@ static int load_aout_library(struct file *file) do_brk(start_addr, ex.a_text + ex.a_data + ex.a_bss); - file->f_op->read(file, (char __user *)start_addr, + file->f_op->read(file, (char *)start_addr, ex.a_text + ex.a_data, &pos); flush_icache_range((unsigned long) start_addr, (unsigned long) start_addr + ex.a_text + ex.a_data);