summaryrefslogtreecommitdiff
path: root/kern/slab.c
diff options
context:
space:
mode:
authorRichard Braun <rbraun@sceen.net>2013-06-02 18:50:56 +0200
committerRichard Braun <rbraun@sceen.net>2013-06-02 18:50:56 +0200
commitb67a79a13ae2a42ed4a64bfd2bd3b4982cfdefca (patch)
treec22a4a1d465ef410141faaff1b9024181cffff5f /kern/slab.c
parent1855863a892ad28ef681129e57ad375e3805362b (diff)
Fix yet another locking error in the slab allocator
* kern/slab.c (kmem_cache_free): Relock cache before retrying releasing an object to the CPU pool layer.
Diffstat (limited to 'kern/slab.c')
-rw-r--r--kern/slab.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/kern/slab.c b/kern/slab.c
index d14d07a..56fadbf 100644
--- a/kern/slab.c
+++ b/kern/slab.c
@@ -1229,6 +1229,7 @@ fast_free:
simple_unlock(&cpu_pool->lock);
kmem_cache_free(cache->cpu_pool_type->array_cache,
(vm_offset_t)array);
+ simple_lock(&cpu_pool->lock);
goto fast_free;
}