--- 2.4.9aa3/mm/page_alloc.c.~1~	Sun Aug 19 07:34:24 2001
+++ 2.4.9aa3/mm/page_alloc.c	Mon Aug 20 02:53:13 2001
@@ -585,23 +585,20 @@
  */
 unsigned int nr_free_buffer_pages (void)
 {
+	pg_data_t *pgdat = pgdat_list;
 	unsigned int sum = 0;
 	zonelist_t *zonelist;
 	zone_t **zonep, *zone;
 
-	zonelist = contig_page_data.node_zonelists + (GFP_NOFS & GFP_ZONEMASK);
-	zonep = zonelist->zones;
+	do {
+		zonelist = pgdat->node_zonelists + __GFP_HIGHMEM;
+		zonep = zonelist->zones;
 
-	for (zone = *zonep++; zone; zone = *zonep++) {
-		unsigned int pages = zone->free_pages +
-			zone->inactive_clean_pages +
-			zone->inactive_dirty_pages;
+		for (zone = *zonep++; zone; zone = *zonep++)
+			sum += zone->free_pages + zone->inactive_clean_pages + zone->inactive_dirty_pages;
 
-		/* Allow the buffer cache to fill up at least "pages_high" pages */
-		if (pages < zone->pages_high)
-			pages = zone->pages_high;
-		sum += pages;
-	}
+		pgdat = pgdat->node_next;
+	} while (pgdat);
 
 	return sum;
 }