[PATCH -mm] rmap: remove obsolete check from __page_check_anon_rmap

From: Rik van Riel
Date: Thu Jan 28 2010 - 01:44:10 EST


When an anonymous page is inherited from a parent process, the
vma->anon_vma can differ from the page anon_vma. This can trip
up __page_check_anon_rmap, which is indirectly called from
do_swap_page().

Remove that obsolete check to prevent an oops.

Signed-off-by: Rik van Riel <riel@xxxxxxxxxx>
---
The previous patch survived a short AIM7 run and only got upset when I
invoked pkill. Presumably pkill paged in a page that was created in the
parent process of the process is was scanning. With this patch it all
seems to be stable.

diff --git a/mm/rmap.c b/mm/rmap.c
index de7fde0..9e63424 100644
--- a/mm/rmap.c
+++ b/mm/rmap.c
@@ -755,9 +755,6 @@ static void __page_check_anon_rmap(struct page *page,
* are initially only visible via the pagetables, and the pte is locked
* over the call to page_add_new_anon_rmap.
*/
- struct anon_vma *anon_vma = vma->anon_vma;
- anon_vma = (void *) anon_vma + PAGE_MAPPING_ANON;
- BUG_ON(page->mapping != (struct address_space *)anon_vma);
BUG_ON(page->index != linear_page_index(vma, address));
#endif
}
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/