We need to subtract the number of freed slab pages from the number of pages to free, not add it. 25-akpm/mm/vmscan.c | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-) diff -puN mm/vmscan.c~slab-reclaim-accounting-fix mm/vmscan.c --- 25/mm/vmscan.c~slab-reclaim-accounting-fix Thu Jul 17 13:09:26 2003 +++ 25-akpm/mm/vmscan.c Thu Jul 17 13:09:38 2003 @@ -921,7 +921,7 @@ static int balance_pgdat(pg_data_t *pgda if (i < ZONE_HIGHMEM) { reclaim_state->reclaimed_slab = 0; shrink_slab(max_scan + nr_mapped, GFP_KERNEL); - to_free += reclaim_state->reclaimed_slab; + to_free -= reclaim_state->reclaimed_slab; } if (zone->all_unreclaimable) continue; _