summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Morton <akpm@digeo.com>2003-02-02 06:08:03 -0800
committerLinus Torvalds <torvalds@home.transmeta.com>2003-02-02 06:08:03 -0800
commit43bb7a3a050adbfa31befe0d89db6606fb5141df (patch)
tree46a92d8c9f2f6e024ea2ca578a18b3803b28bf1a
parent4a3691214ab7f95b23909d899df65ad28c145209 (diff)
[PATCH] slab IRQ fix
Patch from Manfred Spraul <manfred@colorfullife.com> cache_alloc_refill() forgets to disable interrupts again on an error path. This exposes us to slab corruption and it makes slab debugging go BUG (it expects local irqs to be disabled).
-rw-r--r--mm/slab.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/mm/slab.c b/mm/slab.c
index e99393f94e7d..5fa3a4c6862d 100644
--- a/mm/slab.c
+++ b/mm/slab.c
@@ -1419,6 +1419,8 @@ static int cache_grow (kmem_cache_t * cachep, int flags)
opps1:
kmem_freepages(cachep, objp);
failed:
+ if (local_flags & __GFP_WAIT)
+ local_irq_disable();
return 0;
}