On Thu, Apr 1, 2010 at 6:30 PM, Mel Gorman <mel@csn.ul.ie> wrote:
Thanks. I think it's possible. It's subtle problem.
Assume !page_mapped && PageAnon(page) && PageSwapCache
0. PageAnon check
1. race window <---- anon_vma free!!!!
2. rcu_read_lock()
3. skip_unmap
4. move_to_new_page
5. newpage->mapping = page->mapping <--- !!!! It's invalid
6. mapping->a_ops->migratepage
7. radix tree change, copy page (still new page anon is NULL)
8. remove_migrate_ptes
9. rmap_walk
10. PageAnon is true --> we are deceived.
11. rmap_walk_anon -> go bomb!
Does it make sense?
--
Kind regards,
Minchan Kim
--