From: Tejun Heo <tj@kernel.org> To: Linus Torvalds <torvalds@linux-foundation.org>, Andrew Morton <akpm@linux-foundation.org>, lkml <linux-kernel@vger.kernel.org>, dri-devel@lists.sourceforge.net, Dave Airlie <airlied@gmail.com>, Greg KH <greg@kroah.com>, Eric Paris <eparis@redhat.com> Subject: [PATCH 2.6.33-rc6] idr: revert misallocation bug fix Date: Thu, 04 Feb 2010 17:57:37 +0900 [thread overview] Message-ID: <4B6A8C01.5020403@kernel.org> (raw) Commit 859ddf09743a8cc680af33f7259ccd0fd36bfe9d tried to fix misallocation bug but broke full bit marking by not clearing pa[idp->layers] and also is causing X failures due to lookup failure in drm code. The cause of the latter hasn't been found yet. Revert the fix for now. Signed-off-by: Tejun Heo <tj@kernel.org> --- Sorry this wasn't found before hitting mainline. It looks like this will have to stay broken for a bit more. I'll make an userland test rig and find out what's going on. Thanks. lib/idr.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/idr.c b/lib/idr.c index ba7d37c..1cac726 100644 --- a/lib/idr.c +++ b/lib/idr.c @@ -140,7 +140,8 @@ static int sub_alloc(struct idr *idp, int *starting_id, struct idr_layer **pa) id = *starting_id; restart: p = idp->top; - l = p->layer; + l = idp->layers; + pa[l--] = NULL; while (1) { /* * We run around this while until we reach the leaf node... @@ -154,8 +155,8 @@ static int sub_alloc(struct idr *idp, int *starting_id, struct idr_layer **pa) oid = id; id = (id | ((1 << (IDR_BITS * l)) - 1)) + 1; - /* did id go over the limit? */ - if (id >= (1 << (idp->layers * IDR_BITS))) { + /* if already at the top layer, we need to grow */ + if (!(p = pa[l])) { *starting_id = id; return IDR_NEED_TO_GROW; }
WARNING: multiple messages have this Message-ID (diff)
From: Tejun Heo <tj@kernel.org> To: Linus Torvalds <torvalds@linux-foundation.org>, Andrew Morton <akpm@linux-foundation.org>, lkml <linux-kernel@vger.kernel.org>, dri-devel@lists.sourceforge.net, Dave Airlie <airlied@g> Subject: [PATCH 2.6.33-rc6] idr: revert misallocation bug fix Date: Thu, 04 Feb 2010 17:57:37 +0900 [thread overview] Message-ID: <4B6A8C01.5020403@kernel.org> (raw) Commit 859ddf09743a8cc680af33f7259ccd0fd36bfe9d tried to fix misallocation bug but broke full bit marking by not clearing pa[idp->layers] and also is causing X failures due to lookup failure in drm code. The cause of the latter hasn't been found yet. Revert the fix for now. Signed-off-by: Tejun Heo <tj@kernel.org> --- Sorry this wasn't found before hitting mainline. It looks like this will have to stay broken for a bit more. I'll make an userland test rig and find out what's going on. Thanks. lib/idr.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/idr.c b/lib/idr.c index ba7d37c..1cac726 100644 --- a/lib/idr.c +++ b/lib/idr.c @@ -140,7 +140,8 @@ static int sub_alloc(struct idr *idp, int *starting_id, struct idr_layer **pa) id = *starting_id; restart: p = idp->top; - l = p->layer; + l = idp->layers; + pa[l--] = NULL; while (1) { /* * We run around this while until we reach the leaf node... @@ -154,8 +155,8 @@ static int sub_alloc(struct idr *idp, int *starting_id, struct idr_layer **pa) oid = id; id = (id | ((1 << (IDR_BITS * l)) - 1)) + 1; - /* did id go over the limit? */ - if (id >= (1 << (idp->layers * IDR_BITS))) { + /* if already at the top layer, we need to grow */ + if (!(p = pa[l])) { *starting_id = id; return IDR_NEED_TO_GROW; }
next reply other threads:[~2010-02-04 8:58 UTC|newest] Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top 2010-02-04 8:57 Tejun Heo [this message] 2010-02-04 8:57 ` [PATCH 2.6.33-rc6] idr: revert misallocation bug fix Tejun Heo 2010-02-04 20:58 ` Dave Hansen 2010-02-11 8:52 ` Tejun Heo
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=4B6A8C01.5020403@kernel.org \ --to=tj@kernel.org \ --cc=airlied@gmail.com \ --cc=akpm@linux-foundation.org \ --cc=dri-devel@lists.sourceforge.net \ --cc=eparis@redhat.com \ --cc=greg@kroah.com \ --cc=linux-kernel@vger.kernel.org \ --cc=torvalds@linux-foundation.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.