kmemcg: don't allocate extra memory for root memcg_cache_params
authorAndrey Vagin <[email protected]>
Wed, 11 Sep 2013 21:22:18 +0000 (14:22 -0700)
committerLinus Torvalds <[email protected]>
Wed, 11 Sep 2013 22:57:53 +0000 (15:57 -0700)
commit90c7a79cc45becc6cdb8c026d55ace19e299a02d
tree9945ae5d0ab316e2eecba158265976a308a37204
parente76b63f80d938a1319eb5fb0ae7ea69bddfbae38
kmemcg: don't allocate extra memory for root memcg_cache_params

The memcg_cache_params structure contains the common part and the union,
which represents two different types of data: one for root cashes and
another for child caches.

The size of child data is fixed.  The size of the memcg_caches array is
calculated in runtime.

Currently the size of memcg_cache_params for root caches is calculated
incorrectly, because it includes the size of parameters for child caches.

ssize_t size = memcg_caches_array_size(num_groups);
size *= sizeof(void *);

size += sizeof(struct memcg_cache_params);

v2: Fix a typo in calculations

Signed-off-by: Andrey Vagin <[email protected]>
Cc: Glauber Costa <[email protected]>
Cc: Johannes Weiner <[email protected]>
Cc: Michal Hocko <[email protected]>
Cc: Balbir Singh <[email protected]>
Cc: KAMEZAWA Hiroyuki <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
mm/memcontrol.c