Skip to content

Commit

Permalink
memcg: use proper type for mod_memcg_state
Browse files Browse the repository at this point in the history
The memcg stats update functions can take arbitrary integer but the only
input which make sense is enum memcg_stat_item and we don't want these
functions to be called with arbitrary integer, so replace the parameter
type with enum memcg_stat_item and compiler will be able to warn if memcg
stat update functions are called with incorrect index value.

Link: https://lkml.kernel.org/r/20240501172617.678560-9-shakeel.butt@linux.dev
Signed-off-by: Shakeel Butt <shakeel.butt@linux.dev>
Reviewed-by: T.J. Mercier <tjmercier@google.com>
Reviewed-by: Roman Gushchin <roman.gushchin@linux.dev>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Michal Hocko <mhocko@kernel.org>
Cc: Muchun Song <muchun.song@linux.dev>
Cc: Yosry Ahmed <yosryahmed@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
  • Loading branch information
shakeelb authored and akpm00 committed May 7, 2024
1 parent acb5fe2 commit a94032b
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 7 deletions.
13 changes: 7 additions & 6 deletions include/linux/memcontrol.h
Original file line number Diff line number Diff line change
Expand Up @@ -974,7 +974,8 @@ void mem_cgroup_print_oom_group(struct mem_cgroup *memcg);
void folio_memcg_lock(struct folio *folio);
void folio_memcg_unlock(struct folio *folio);

void __mod_memcg_state(struct mem_cgroup *memcg, int idx, int val);
void __mod_memcg_state(struct mem_cgroup *memcg, enum memcg_stat_item idx,
int val);

/* try to stablize folio_memcg() for all the pages in a memcg */
static inline bool mem_cgroup_trylock_pages(struct mem_cgroup *memcg)
Expand All @@ -995,7 +996,7 @@ static inline void mem_cgroup_unlock_pages(void)

/* idx can be of type enum memcg_stat_item or node_stat_item */
static inline void mod_memcg_state(struct mem_cgroup *memcg,
int idx, int val)
enum memcg_stat_item idx, int val)
{
unsigned long flags;

Expand All @@ -1005,7 +1006,7 @@ static inline void mod_memcg_state(struct mem_cgroup *memcg,
}

static inline void mod_memcg_page_state(struct page *page,
int idx, int val)
enum memcg_stat_item idx, int val)
{
struct mem_cgroup *memcg;

Expand Down Expand Up @@ -1491,19 +1492,19 @@ static inline void mem_cgroup_print_oom_group(struct mem_cgroup *memcg)
}

static inline void __mod_memcg_state(struct mem_cgroup *memcg,
int idx,
enum memcg_stat_item idx,
int nr)
{
}

static inline void mod_memcg_state(struct mem_cgroup *memcg,
int idx,
enum memcg_stat_item idx,
int nr)
{
}

static inline void mod_memcg_page_state(struct page *page,
int idx, int val)
enum memcg_stat_item idx, int val)
{
}

Expand Down
3 changes: 2 additions & 1 deletion mm/memcontrol.c
Original file line number Diff line number Diff line change
Expand Up @@ -955,7 +955,8 @@ static int memcg_state_val_in_pages(int idx, int val)
* @idx: the stat item - can be enum memcg_stat_item or enum node_stat_item
* @val: delta to add to the counter, can be negative
*/
void __mod_memcg_state(struct mem_cgroup *memcg, int idx, int val)
void __mod_memcg_state(struct mem_cgroup *memcg, enum memcg_stat_item idx,
int val)
{
int i = memcg_stats_index(idx);

Expand Down

0 comments on commit a94032b

Please sign in to comment.