--- linux/mm/vmscan.c Mon Apr 8 17:15:43 2002 +++ linux-numaq/mm/vmscan.c Mon Apr 8 17:21:02 2002 @@ -279,6 +279,7 @@ pte_chain_lock(page); if (page->pte_chain && !page->mapping && !page->buffers) { page_cache_get(page); + pte_chain_unlock(page); unlock_lru(zone); if (!add_to_swap(page)) { activate_page(page); @@ -286,12 +287,13 @@ page_cache_release(page); lock_lru(zone); continue; - pte_chain_unlock(page); } page_cache_release(page); lock_lru(zone); + goto escape_swap_evil: } pte_chain_unlock(page); +escape_swap_evil: /* * The page is mapped into the page tables of one or more