diff --git a/mm/slub.c b/mm/slub.c index 4bc29bcd0d5dc46e0fa782c1668e0c18b91d3b72..f9b39a3718d009612d6935bf5dbc1e7bbcecaf3e 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -5560,7 +5560,10 @@ static ssize_t slab_attr_store(struct kobject *kobj, if (slab_state >= FULL && err >= 0 && is_root_cache(s)) { struct kmem_cache *c; - mutex_lock(&slab_mutex); + if (!mutex_trylock(&slab_mutex)) { + pr_warn("slab file is busy\n"); + return -EBUSY; + } if (s->max_attr_size < len) s->max_attr_size = len;