diff options
author | Xiao Guangrong <xiaoguangrong@linux.vnet.ibm.com> | 2012-03-21 19:33:56 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-21 20:54:56 -0400 |
commit | f44d21985eb6af7361d3785e26923355172147bd (patch) | |
tree | 1ced398274730cee6cd9173696e6fe08e52c6e91 /mm | |
parent | cbde83e21c4fd50bfc4240408355c1e5d393063d (diff) |
mm: do not reset cached_hole_size when vma is unmapped
In the current code, cached_hole_size is set to the maximum value if the
unmapped vma is less that free_area_cache so the next search will search
from the base address.
Actually, we can keep cached_hole_size so that if the next required size
is more than cached_hole_size, it can search from free_area_cache.
Signed-off-by: Xiao Guangrong <xiaoguangrong@linux.vnet.ibm.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Michal Hocko <mhocko@suse.cz>
Cc: Hillf Danton <dhillf@gmail.com>
Cc: Andrea Arcangeli <aarcange@redhat.com>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Rik van Riel <riel@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm')
-rw-r--r-- | mm/mmap.c | 4 |
1 files changed, 1 insertions, 3 deletions
@@ -1426,10 +1426,8 @@ void arch_unmap_area(struct mm_struct *mm, unsigned long addr) | |||
1426 | /* | 1426 | /* |
1427 | * Is this a new hole at the lowest possible address? | 1427 | * Is this a new hole at the lowest possible address? |
1428 | */ | 1428 | */ |
1429 | if (addr >= TASK_UNMAPPED_BASE && addr < mm->free_area_cache) { | 1429 | if (addr >= TASK_UNMAPPED_BASE && addr < mm->free_area_cache) |
1430 | mm->free_area_cache = addr; | 1430 | mm->free_area_cache = addr; |
1431 | mm->cached_hole_size = ~0UL; | ||
1432 | } | ||
1433 | } | 1431 | } |
1434 | 1432 | ||
1435 | /* | 1433 | /* |