aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/ia32/ia32_aout.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/ia32/ia32_aout.c')
-rw-r--r--arch/x86/ia32/ia32_aout.c12
1 files changed, 3 insertions, 9 deletions
diff --git a/arch/x86/ia32/ia32_aout.c b/arch/x86/ia32/ia32_aout.c
index b6817ee9033f..4824fb45560f 100644
--- a/arch/x86/ia32/ia32_aout.c
+++ b/arch/x86/ia32/ia32_aout.c
@@ -379,26 +379,22 @@ static int load_aout_binary(struct linux_binprm *bprm, struct pt_regs *regs)
379 goto beyond_if; 379 goto beyond_if;
380 } 380 }
381 381
382 down_write(&current->mm->mmap_sem); 382 error = vm_mmap(bprm->file, N_TXTADDR(ex), ex.a_text,
383 error = do_mmap(bprm->file, N_TXTADDR(ex), ex.a_text,
384 PROT_READ | PROT_EXEC, 383 PROT_READ | PROT_EXEC,
385 MAP_FIXED | MAP_PRIVATE | MAP_DENYWRITE | 384 MAP_FIXED | MAP_PRIVATE | MAP_DENYWRITE |
386 MAP_EXECUTABLE | MAP_32BIT, 385 MAP_EXECUTABLE | MAP_32BIT,
387 fd_offset); 386 fd_offset);
388 up_write(&current->mm->mmap_sem);
389 387
390 if (error != N_TXTADDR(ex)) { 388 if (error != N_TXTADDR(ex)) {
391 send_sig(SIGKILL, current, 0); 389 send_sig(SIGKILL, current, 0);
392 return error; 390 return error;
393 } 391 }
394 392
395 down_write(&current->mm->mmap_sem); 393 error = vm_mmap(bprm->file, N_DATADDR(ex), ex.a_data,
396 error = do_mmap(bprm->file, N_DATADDR(ex), ex.a_data,
397 PROT_READ | PROT_WRITE | PROT_EXEC, 394 PROT_READ | PROT_WRITE | PROT_EXEC,
398 MAP_FIXED | MAP_PRIVATE | MAP_DENYWRITE | 395 MAP_FIXED | MAP_PRIVATE | MAP_DENYWRITE |
399 MAP_EXECUTABLE | MAP_32BIT, 396 MAP_EXECUTABLE | MAP_32BIT,
400 fd_offset + ex.a_text); 397 fd_offset + ex.a_text);
401 up_write(&current->mm->mmap_sem);
402 if (error != N_DATADDR(ex)) { 398 if (error != N_DATADDR(ex)) {
403 send_sig(SIGKILL, current, 0); 399 send_sig(SIGKILL, current, 0);
404 return error; 400 return error;
@@ -482,12 +478,10 @@ static int load_aout_library(struct file *file)
482 goto out; 478 goto out;
483 } 479 }
484 /* Now use mmap to map the library into memory. */ 480 /* Now use mmap to map the library into memory. */
485 down_write(&current->mm->mmap_sem); 481 error = vm_mmap(file, start_addr, ex.a_text + ex.a_data,
486 error = do_mmap(file, start_addr, ex.a_text + ex.a_data,
487 PROT_READ | PROT_WRITE | PROT_EXEC, 482 PROT_READ | PROT_WRITE | PROT_EXEC,
488 MAP_FIXED | MAP_PRIVATE | MAP_DENYWRITE | MAP_32BIT, 483 MAP_FIXED | MAP_PRIVATE | MAP_DENYWRITE | MAP_32BIT,
489 N_TXTOFF(ex)); 484 N_TXTOFF(ex));
490 up_write(&current->mm->mmap_sem);
491 retval = error; 485 retval = error;
492 if (error != start_addr) 486 if (error != start_addr)
493 goto out; 487 goto out;