summaryrefslogtreecommitdiff
path: root/mm/slub.c
diff options
context:
space:
mode:
authorSteven Rostedt (VMware) <rostedt@goodmis.org>2019-11-12 17:02:45 -0500
committerSteven Rostedt (VMware) <rostedt@goodmis.org>2019-11-12 17:02:45 -0500
commit0b86d9cde93c665d0f069f84f42f60f8b799f9bf (patch)
tree5ab0181daedfd4ad0f934351fc949431f5fe9d11 /mm/slub.c
parentdf6ae74d1e1126e08328e904df359eddc5335d93 (diff)
parent5ee93551c703f8fa1a6c414a7d08f956de311df3 (diff)
downloadlinux-rt-0b86d9cde93c665d0f069f84f42f60f8b799f9bf.tar.gz
Merge tag 'v4.19.82' into v4.19-rt
This is the 4.19.82 stable release
Diffstat (limited to 'mm/slub.c')
-rw-r--r--mm/slub.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/mm/slub.c b/mm/slub.c
index 2240b51a0549..81c32ceab228 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -4874,7 +4874,17 @@ static ssize_t show_slab_objects(struct kmem_cache *s,
}
}
- get_online_mems();
+ /*
+ * It is impossible to take "mem_hotplug_lock" here with "kernfs_mutex"
+ * already held which will conflict with an existing lock order:
+ *
+ * mem_hotplug_lock->slab_mutex->kernfs_mutex
+ *
+ * We don't really need mem_hotplug_lock (to hold off
+ * slab_mem_going_offline_callback) here because slab's memory hot
+ * unplug code doesn't destroy the kmem_cache->node[] data.
+ */
+
#ifdef CONFIG_SLUB_DEBUG
if (flags & SO_ALL) {
struct kmem_cache_node *n;
@@ -4915,7 +4925,6 @@ static ssize_t show_slab_objects(struct kmem_cache *s,
x += sprintf(buf + x, " N%d=%lu",
node, nodes[node]);
#endif
- put_online_mems();
kfree(nodes);
return x + sprintf(buf + x, "\n");
}