diff options
Diffstat (limited to 'mm/mremap.c')
-rw-r--r-- | mm/mremap.c | 26 |
1 files changed, 5 insertions, 21 deletions
diff --git a/mm/mremap.c b/mm/mremap.c index db8d983b5a7d..21fed202ddad 100644 --- a/mm/mremap.c +++ b/mm/mremap.c | |||
@@ -371,10 +371,6 @@ static unsigned long mremap_to(unsigned long addr, | |||
371 | if ((addr <= new_addr) && (addr+old_len) > new_addr) | 371 | if ((addr <= new_addr) && (addr+old_len) > new_addr) |
372 | goto out; | 372 | goto out; |
373 | 373 | ||
374 | ret = security_file_mmap(NULL, 0, 0, 0, new_addr, 1); | ||
375 | if (ret) | ||
376 | goto out; | ||
377 | |||
378 | ret = do_munmap(mm, new_addr, new_len); | 374 | ret = do_munmap(mm, new_addr, new_len); |
379 | if (ret) | 375 | if (ret) |
380 | goto out; | 376 | goto out; |
@@ -432,15 +428,17 @@ static int vma_expandable(struct vm_area_struct *vma, unsigned long delta) | |||
432 | * MREMAP_FIXED option added 5-Dec-1999 by Benjamin LaHaise | 428 | * MREMAP_FIXED option added 5-Dec-1999 by Benjamin LaHaise |
433 | * This option implies MREMAP_MAYMOVE. | 429 | * This option implies MREMAP_MAYMOVE. |
434 | */ | 430 | */ |
435 | unsigned long do_mremap(unsigned long addr, | 431 | SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len, |
436 | unsigned long old_len, unsigned long new_len, | 432 | unsigned long, new_len, unsigned long, flags, |
437 | unsigned long flags, unsigned long new_addr) | 433 | unsigned long, new_addr) |
438 | { | 434 | { |
439 | struct mm_struct *mm = current->mm; | 435 | struct mm_struct *mm = current->mm; |
440 | struct vm_area_struct *vma; | 436 | struct vm_area_struct *vma; |
441 | unsigned long ret = -EINVAL; | 437 | unsigned long ret = -EINVAL; |
442 | unsigned long charged = 0; | 438 | unsigned long charged = 0; |
443 | 439 | ||
440 | down_write(¤t->mm->mmap_sem); | ||
441 | |||
444 | if (flags & ~(MREMAP_FIXED | MREMAP_MAYMOVE)) | 442 | if (flags & ~(MREMAP_FIXED | MREMAP_MAYMOVE)) |
445 | goto out; | 443 | goto out; |
446 | 444 | ||
@@ -530,25 +528,11 @@ unsigned long do_mremap(unsigned long addr, | |||
530 | goto out; | 528 | goto out; |
531 | } | 529 | } |
532 | 530 | ||
533 | ret = security_file_mmap(NULL, 0, 0, 0, new_addr, 1); | ||
534 | if (ret) | ||
535 | goto out; | ||
536 | ret = move_vma(vma, addr, old_len, new_len, new_addr); | 531 | ret = move_vma(vma, addr, old_len, new_len, new_addr); |
537 | } | 532 | } |
538 | out: | 533 | out: |
539 | if (ret & ~PAGE_MASK) | 534 | if (ret & ~PAGE_MASK) |
540 | vm_unacct_memory(charged); | 535 | vm_unacct_memory(charged); |
541 | return ret; | ||
542 | } | ||
543 | |||
544 | SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len, | ||
545 | unsigned long, new_len, unsigned long, flags, | ||
546 | unsigned long, new_addr) | ||
547 | { | ||
548 | unsigned long ret; | ||
549 | |||
550 | down_write(¤t->mm->mmap_sem); | ||
551 | ret = do_mremap(addr, old_len, new_len, flags, new_addr); | ||
552 | up_write(¤t->mm->mmap_sem); | 536 | up_write(¤t->mm->mmap_sem); |
553 | return ret; | 537 | return ret; |
554 | } | 538 | } |