Messages in this thread Patch in this message | | | Date | Thu, 11 Feb 2010 17:52:05 +0900 | From | Tejun Heo <> | Subject | Re: [PATCH 2.6.33-rc6] idr: revert misallocation bug fix |
| |
Hello,
On 02/05/2010 05:58 AM, Dave Hansen wrote: > Bah. I just ran into and bisected the X startup problem. :) > > Let me know when you have a proper fix. I can test on my machine for > you.
Can you please test the following against 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
| |