From aa600d8a3843755be1dd621ecd00401f26f3bb49 Mon Sep 17 00:00:00 2001 From: Brian Behlendorf Date: Thu, 18 Mar 2010 13:39:51 -0700 Subject: [PATCH] Reduce max kmem based slab size Allowing MAX_ORDER-1 sized allocations for kmem based slabs have been observed to result in deadlocks. To help prvent this limit max kmem based slab size to MAX_ORDER-3. Just for the record callers should not be creating slabs like this, but if they do we should still handle it as safely as we can. --- module/spl/spl-kmem.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/spl/spl-kmem.c b/module/spl/spl-kmem.c index f87d2b5..d62a6f6 100644 --- a/module/spl/spl-kmem.c +++ b/module/spl/spl-kmem.c @@ -1057,7 +1057,7 @@ spl_slab_size(spl_kmem_cache_t *skc, uint32_t *objs, uint32_t *size) obj_size = spl_obj_size(skc); if (skc->skc_flags & KMC_KMEM) - max_size = ((uint32_t)1 << (MAX_ORDER-1)) * PAGE_SIZE; + max_size = ((uint32_t)1 << (MAX_ORDER-3)) * PAGE_SIZE; else max_size = (32 * 1024 * 1024); -- 2.39.5