|
@@ -5071,15 +5071,18 @@ static void memcg_propagate_slab_attrs(struct kmem_cache *s)
|
|
|
#ifdef CONFIG_MEMCG_KMEM
|
|
|
int i;
|
|
|
char *buffer = NULL;
|
|
|
+ struct kmem_cache *root_cache;
|
|
|
|
|
|
- if (!is_root_cache(s))
|
|
|
+ if (is_root_cache(s))
|
|
|
return;
|
|
|
|
|
|
+ root_cache = s->memcg_params->root_cache;
|
|
|
+
|
|
|
/*
|
|
|
* This mean this cache had no attribute written. Therefore, no point
|
|
|
* in copying default values around
|
|
|
*/
|
|
|
- if (!s->max_attr_size)
|
|
|
+ if (!root_cache->max_attr_size)
|
|
|
return;
|
|
|
|
|
|
for (i = 0; i < ARRAY_SIZE(slab_attrs); i++) {
|
|
@@ -5101,7 +5104,7 @@ static void memcg_propagate_slab_attrs(struct kmem_cache *s)
|
|
|
*/
|
|
|
if (buffer)
|
|
|
buf = buffer;
|
|
|
- else if (s->max_attr_size < ARRAY_SIZE(mbuf))
|
|
|
+ else if (root_cache->max_attr_size < ARRAY_SIZE(mbuf))
|
|
|
buf = mbuf;
|
|
|
else {
|
|
|
buffer = (char *) get_zeroed_page(GFP_KERNEL);
|
|
@@ -5110,7 +5113,7 @@ static void memcg_propagate_slab_attrs(struct kmem_cache *s)
|
|
|
buf = buffer;
|
|
|
}
|
|
|
|
|
|
- attr->show(s->memcg_params->root_cache, buf);
|
|
|
+ attr->show(root_cache, buf);
|
|
|
attr->store(s, buf, strlen(buf));
|
|
|
}
|
|
|
|