diff -urNp --exclude CVS --exclude BitKeeper 2.4.23pre4/mm/page_alloc.c x/mm/page_alloc.c --- 2.4.23pre4/mm/page_alloc.c 2003-09-13 00:08:04.000000000 +0200 +++ x/mm/page_alloc.c 2003-09-18 06:42:15.000000000 +0200 @@ -512,14 +512,12 @@ unsigned int nr_free_buffer_pages (void) class_idx = zone_idx(zone); sum += zone->nr_cache_pages; - do { - unsigned int free = zone->free_pages - zone->watermarks[class_idx].high; - zonep++; - zone = *zonep; + for (zone = pgdat->node_zones; zone < pgdat->node_zones + MAX_NR_ZONES; zone++) { + int free = zone->free_pages - zone->watermarks[class_idx].high; if (free <= 0) continue; sum += free; - } while (zone); + } } return sum;