lkml.org 
[lkml]   [2003]   [Sep]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patches in this message
/
Date
From
Subjectnr_free_buffer_pages 2.4.23pre4
Hi Marcelo,

this patch corrects two bugs in nr_free_buffer_pages (they weren't fatal
but it's better to get them right of course ;)

http://www.us.kernel.org/pub/linux/kernel/people/andrea/patches/v2.4/2.4.23pre4/nr_free_buffer_pages-fixes-1

the first bug is the zonep++ before dereferencing it, the second bug is
the free variable that has to be unsigned to handle empty zones
correctly (thanks to Bjorn Helgaas for noticing the latter sign issue).

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;

(this had more prio than the waterkmark fixes, they will came next)

According to the kernel CVS you didn't merge this yet, so please merge
the below too, it will remove a not necessary branch that also generates
a gcc false positive (all harmless of course but it's more correct to
remove it):

--- 2.4.23pre4/mm/page_alloc.c.~1~ 2003-09-13 00:08:04.000000000 +0200
+++ 2.4.23pre4/mm/page_alloc.c 2003-09-14 01:05:24.000000000 +0200
@@ -258,8 +258,6 @@ static struct page * balance_classzone(z
struct page * page = NULL;
int __freed;

- if (!(gfp_mask & __GFP_WAIT))
- goto out;
if (in_interrupt())
BUG();

thanks,
Andrea

/*
* If you refuse to depend on closed software for a critical
* part of your business, these links may be useful:
*
* rsync.kernel.org::pub/scm/linux/kernel/bkcvs/linux-2.5/
* rsync.kernel.org::pub/scm/linux/kernel/bkcvs/linux-2.4/
* http://www.cobite.com/cvsps/
*
* svn://svn.kernel.org/linux-2.6/trunk
* svn://svn.kernel.org/linux-2.4/trunk
*/
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
\
 
 \ /
  Last update: 2005-03-22 13:48    [W:0.021 / U:0.144 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site