Messages in this thread Patch in this message | | | Date | Thu, 11 Feb 2010 17:51:23 +0900 | From | Tejun Heo <> | Subject | Re: patch idr-fix-a-critical-misallocation-bug.patch added to 2.6.32-stable tree |
| |
Hello,
Can you please test the following patch on top of the current mainline?
Thanks.
diff --git a/lib/idr.c b/lib/idr.c index 1cac726..0dc7822 100644 --- a/lib/idr.c +++ b/lib/idr.c @@ -156,10 +156,12 @@ static int sub_alloc(struct idr *idp, int *starting_id, struct idr_layer **pa) id = (id | ((1 << (IDR_BITS * l)) - 1)) + 1; /* if already at the top layer, we need to grow */ - if (!(p = pa[l])) { + if (id >= 1 << (idp->layers * IDR_BITS)) { *starting_id = id; return IDR_NEED_TO_GROW; } + p = pa[l]; + BUG_ON(!p); /* If we need to go up one layer, continue the * loop; otherwise, restart from the top. -- tejun
| |