--- x/mm/vmscan.c.~1~ Thu Jul 13 16:03:38 2000 +++ x/mm/vmscan.c Thu Jul 13 22:02:16 2000 @@ -81,7 +81,7 @@ vma->vm_mm->rss--; flush_tlb_page(vma, address); __free_page(page_map); - return 0; + return atomic_read(&page_map->count) <= 1; } /* @@ -140,7 +140,7 @@ if (vma->vm_ops->swapout(vma, page_map)) kill_proc(pid, SIGBUS, 1); __free_page(page_map); - return 1; + return 2 - (atomic_read(&page_map->count) <= 1); } /* @@ -170,7 +170,7 @@ rw_swap_page(WRITE, entry, (char *) page_address(page_map), 0); __free_page(page_map); - return 1; + return 2 - (atomic_read(&page_map->count) == 1); out_swap_free: swap_free(entry); @@ -370,7 +370,7 @@ goto out; } - if (swap_out_process(pbest, gfp_mask)) + if (swap_out_process(pbest, gfp_mask) == 1) return 1; } out: