summaryrefslogtreecommitdiff
path: root/mm
diff options
context:
space:
mode:
authorShaohua Li <shaohua.li@intel.com>2011-07-09 02:39:41 +0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-07-09 08:14:43 +0400
commit0b43c3aab0137595335b08b340a3f3e5af9818a6 (patch)
treedad2556800b89d42875470744a25533d1d983989 /mm
parent215ddd6664ced067afca7eebd2d1eb83f064ff5a (diff)
downloadlinux-0b43c3aab0137595335b08b340a3f3e5af9818a6.tar.xz
mm: __tlb_remove_page() check the correct batch
__tlb_remove_page() switches to a new batch page, but still checks space in the old batch. This check always fails, and causes a forced tlb flush. Signed-off-by: Shaohua Li <shaohua.li@intel.com> Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl> 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/memory.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/mm/memory.c b/mm/memory.c
index 40b7531ee8ba..9b8a01d941cb 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -305,6 +305,7 @@ int __tlb_remove_page(struct mmu_gather *tlb, struct page *page)
if (batch->nr == batch->max) {
if (!tlb_next_batch(tlb))
return 0;
+ batch = tlb->active;
}
VM_BUG_ON(batch->nr > batch->max);