diff options
| author | Hugh Dickins <hugh@veritas.com> | 2005-10-29 21:15:56 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-10-30 00:40:37 -0400 |
| commit | 2c0b381467bc2997be9d741a152f3fc75785eedc (patch) | |
| tree | f87fffd93dc3f4b5ce9eba5e02fa4ffeb237924e /mm/mmap.c | |
| parent | ab50b8ed818016cfecd747d6d4bb9139986bc029 (diff) | |
[PATCH] mm: remove_vma_list consolidation
unmap_vma doesn't amount to much, let's put it inside unmap_vma_list. Except
it doesn't unmap anything, unmap_region just did the unmapping: rename it to
remove_vma_list.
Signed-off-by: Hugh Dickins <hugh@veritas.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'mm/mmap.c')
| -rw-r--r-- | mm/mmap.c | 36 |
1 files changed, 12 insertions, 24 deletions
| @@ -1603,35 +1603,23 @@ find_extend_vma(struct mm_struct * mm, unsigned long addr) | |||
| 1603 | } | 1603 | } |
| 1604 | #endif | 1604 | #endif |
| 1605 | 1605 | ||
| 1606 | /* Normal function to fix up a mapping | ||
| 1607 | * This function is the default for when an area has no specific | ||
| 1608 | * function. This may be used as part of a more specific routine. | ||
| 1609 | * | ||
| 1610 | * By the time this function is called, the area struct has been | ||
| 1611 | * removed from the process mapping list. | ||
| 1612 | */ | ||
| 1613 | static void unmap_vma(struct mm_struct *mm, struct vm_area_struct *vma) | ||
| 1614 | { | ||
| 1615 | long nrpages = vma_pages(vma); | ||
| 1616 | |||
| 1617 | mm->total_vm -= nrpages; | ||
| 1618 | if (vma->vm_flags & VM_LOCKED) | ||
| 1619 | mm->locked_vm -= nrpages; | ||
| 1620 | vm_stat_account(mm, vma->vm_flags, vma->vm_file, -nrpages); | ||
| 1621 | remove_vm_struct(vma); | ||
| 1622 | } | ||
| 1623 | |||
| 1624 | /* | 1606 | /* |
| 1625 | * Update the VMA and inode share lists. | 1607 | * Ok - we have the memory areas we should free on the vma list, |
| 1626 | * | ||
| 1627 | * Ok - we have the memory areas we should free on the 'free' list, | ||
| 1628 | * so release them, and do the vma updates. | 1608 | * so release them, and do the vma updates. |
| 1609 | * | ||
| 1610 | * Called with the mm semaphore held. | ||
| 1629 | */ | 1611 | */ |
| 1630 | static void unmap_vma_list(struct mm_struct *mm, struct vm_area_struct *vma) | 1612 | static void remove_vma_list(struct mm_struct *mm, struct vm_area_struct *vma) |
| 1631 | { | 1613 | { |
| 1632 | do { | 1614 | do { |
| 1633 | struct vm_area_struct *next = vma->vm_next; | 1615 | struct vm_area_struct *next = vma->vm_next; |
| 1634 | unmap_vma(mm, vma); | 1616 | long nrpages = vma_pages(vma); |
| 1617 | |||
| 1618 | mm->total_vm -= nrpages; | ||
| 1619 | if (vma->vm_flags & VM_LOCKED) | ||
| 1620 | mm->locked_vm -= nrpages; | ||
| 1621 | vm_stat_account(mm, vma->vm_flags, vma->vm_file, -nrpages); | ||
| 1622 | remove_vm_struct(vma); | ||
| 1635 | vma = next; | 1623 | vma = next; |
| 1636 | } while (vma); | 1624 | } while (vma); |
| 1637 | validate_mm(mm); | 1625 | validate_mm(mm); |
| @@ -1799,7 +1787,7 @@ int do_munmap(struct mm_struct *mm, unsigned long start, size_t len) | |||
| 1799 | unmap_region(mm, vma, prev, start, end); | 1787 | unmap_region(mm, vma, prev, start, end); |
| 1800 | 1788 | ||
| 1801 | /* Fix up all other VM information */ | 1789 | /* Fix up all other VM information */ |
| 1802 | unmap_vma_list(mm, vma); | 1790 | remove_vma_list(mm, vma); |
| 1803 | 1791 | ||
| 1804 | return 0; | 1792 | return 0; |
| 1805 | } | 1793 | } |
