From: Li Shaohua <shaohua.li@intel.com>

Signed-off-by: Li Shaohua <shaohua.li@intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 25-akpm/lib/idr.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletion(-)

diff -puN lib/idr.c~idr-missed-unlock lib/idr.c
--- 25/lib/idr.c~idr-missed-unlock	Fri Sep 17 16:05:13 2004
+++ 25-akpm/lib/idr.c	Fri Sep 17 16:05:13 2004
@@ -39,8 +39,10 @@ static struct idr_layer *alloc_layer(str
 	struct idr_layer *p;
 
 	spin_lock(&idp->lock);
-	if (!(p = idp->id_free))
+	if (!(p = idp->id_free)) {
+		spin_unlock(&idp->lock);
 		return NULL;
+	}
 	idp->id_free = p->ary[0];
 	idp->id_free_cnt--;
 	p->ary[0] = NULL;
_