Make do_swap_page redo the fault do_swap_page currently retries locally after successfully locking a swap entry that is used for page migration. Change that to redo the complete fault in order to be able to directly switch from migration entry to a valid pte for an anonymous page. Signed-off-by: Christoph Lameter Index: linux-2.6.16-mm2/mm/memory.c =================================================================== --- linux-2.6.16-mm2.orig/mm/memory.c 2006-03-30 21:21:06.000000000 -0800 +++ linux-2.6.16-mm2/mm/memory.c 2006-03-30 22:55:34.000000000 -0800 @@ -1879,7 +1879,6 @@ static int do_swap_page(struct mm_struct goto out; entry = pte_to_swp_entry(orig_pte); -again: page = lookup_swap_cache(entry); if (!page) { swapin_readahead(entry, address, vma); @@ -1906,8 +1905,7 @@ again: if (!PageSwapCache(page)) { /* Page migration has occured */ unlock_page(page); - page_cache_release(page); - goto again; + goto out; } /*