|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] Trivial fix for latent bug in page_alloc.c
Rusty Russell wrote: Was reading through page_alloc.c, and the "find smallest order" loop assumes MIN_ORDER is 0. Easiest fix is to get rid of "MIN_ORDER" and hence NR_ORDERS, and simplify code. Rusty. --- xen/common/page_alloc.c.~1~ 2005-01-11 15:35:54.000000000 +1100 +++ xen/common/page_alloc.c 2005-01-19 14:51:47.000000000 +1100 @@ -203,10 +203,8 @@ #define NR_ZONES 2/* Up to 2^10 pages can be allocated at once. */-#define MIN_ORDER 0 #define MAX_ORDER 10 -#define NR_ORDERS (MAX_ORDER - MIN_ORDER + 1) -static struct list_head heap[NR_ZONES][NR_ORDERS]; +static struct list_head heap[NR_ZONES][MAX_ORDER]; This patch is broken because it replaces NR_ORDERS with MAX_ORDER, not with MAX_ORDER+1. #define MAX_ORDER 10 static struct list_head heap[NR_ZONES][MAX_ORDER+1]; static unsigned long avail[NR_ZONES];@@ -220,7 +218,7 @@
for ( j = 0; j <= MAX_ORDER; j++ )
Why is it valid to change 'return NULL' to a failed ASSERT?
Also changing > to >= is wrong.
if ( unlikely(order < 0) || unlikely(order > MAX_ORDER) )
return NULL;
for ( i = order; i <= MAX_ORDER; i++ )
if ( i > MAX_ORDER)
-- David Hopwood <david.nospam.hopwood@xxxxxxxxxxxxxxxx> ------------------------------------------------------- The SF.Net email is sponsored by: Beat the post-holiday blues Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.sourceforge.net/lists/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |