|
@@ -3121,7 +3121,7 @@ int memcg_update_cache_size(struct kmem_cache *s, int num_groups)
|
|
|
ssize_t size = memcg_caches_array_size(num_groups);
|
|
|
|
|
|
size *= sizeof(void *);
|
|
|
- size += sizeof(struct memcg_cache_params);
|
|
|
+ size += offsetof(struct memcg_cache_params, memcg_caches);
|
|
|
|
|
|
s->memcg_params = kzalloc(size, GFP_KERNEL);
|
|
|
if (!s->memcg_params) {
|
|
@@ -3164,13 +3164,16 @@ int memcg_update_cache_size(struct kmem_cache *s, int num_groups)
|
|
|
int memcg_register_cache(struct mem_cgroup *memcg, struct kmem_cache *s,
|
|
|
struct kmem_cache *root_cache)
|
|
|
{
|
|
|
- size_t size = sizeof(struct memcg_cache_params);
|
|
|
+ size_t size;
|
|
|
|
|
|
if (!memcg_kmem_enabled())
|
|
|
return 0;
|
|
|
|
|
|
- if (!memcg)
|
|
|
+ if (!memcg) {
|
|
|
+ size = offsetof(struct memcg_cache_params, memcg_caches);
|
|
|
size += memcg_limited_groups_array_size * sizeof(void *);
|
|
|
+ } else
|
|
|
+ size = sizeof(struct memcg_cache_params);
|
|
|
|
|
|
s->memcg_params = kzalloc(size, GFP_KERNEL);
|
|
|
if (!s->memcg_params)
|