diff -urN 2.2.17pre6/mm/vmscan.c fix-oom/mm/vmscan.c --- 2.2.17pre6/mm/vmscan.c Fri Jun 23 15:24:58 2000 +++ fix-oom/mm/vmscan.c Fri Jun 23 16:36:33 2000 @@ -380,8 +380,6 @@ static int do_try_to_free_pages(unsigned int gfp_mask) { int priority; - int ret = 0; - int swapcount; int count = SWAP_CLUSTER_MAX; lock_kernel(); @@ -392,7 +390,6 @@ priority = 6; do { while (shrink_mmap(priority, gfp_mask)) { - ret = 1; if (!--count) goto done; } @@ -400,18 +397,15 @@ /* Try to get rid of some shared memory pages.. */ if (gfp_mask & __GFP_IO) { while (shm_swap(priority, gfp_mask)) { - ret = 1; if (!--count) goto done; } } /* Then, try to page stuff out.. */ - swapcount = count; while (swap_out(priority, gfp_mask)) { - ret = 1; - if (!--swapcount) - break; + if (!--count) + goto done; } shrink_dcache_memory(priority, gfp_mask); @@ -423,7 +417,7 @@ printk("VM: do_try_to_free_pages failed for %s...\n", current->comm); /* Return success if we freed a page. */ - return ret; + return priority >= 0; } /*