]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
memcg-increase-the-valid-index-range-for-memcg-stats-v5
authorPasha Tatashin <pasha.tatashin@soleen.com>
Tue, 30 Jul 2024 15:01:56 +0000 (15:01 +0000)
committerAndrew Morton <akpm@linux-foundation.org>
Sat, 17 Aug 2024 00:52:34 +0000 (17:52 -0700)
address a comment from Yosry Ahmed, renamed IS_INVALID(idx) to
BAD_STAT_IDX(index), also made it more relaxed (>= instead of ==).

Signed-off-by: Shakeel Butt <shakeel.butt@linux.dev>
Co-developed-by: Pasha Tatashin <pasha.tatashin@soleen.com>
Signed-off-by: Pasha Tatashin <pasha.tatashin@soleen.com>
Cc: Domenico Cerasuolo <cerasuolodomenico@gmail.com>
Cc: Kent Overstreet <kent.overstreet@linux.dev>
Cc: Li Zhijian <lizhijian@fujitsu.com>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: Nhat Pham <nphamcs@gmail.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Suren Baghdasaryan <surenb@google.com>
Cc: Vlastimil Babka <vbabka@suse.cz>
Cc: Zi Yan <ziy@nvidia.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/memcontrol.c

index e25f6947909d0d02d9ec6f9baea03999b36b5b25..c0ee0f2f8176d285b97905bef140b42400d7483e 100644 (file)
@@ -320,7 +320,7 @@ static const unsigned int memcg_stat_items[] = {
 #define NR_MEMCG_NODE_STAT_ITEMS ARRAY_SIZE(memcg_node_stat_items)
 #define MEMCG_VMSTAT_SIZE (NR_MEMCG_NODE_STAT_ITEMS + \
                           ARRAY_SIZE(memcg_stat_items))
-#define IS_INVALID(index) ((index) == U8_MAX)
+#define BAD_STAT_IDX(index) ((u32)(index) >= U8_MAX)
 static u8 mem_cgroup_stats_index[MEMCG_NR_STAT] __read_mostly;
 
 static void init_memcg_stats(void)
@@ -372,7 +372,7 @@ unsigned long lruvec_page_state(struct lruvec *lruvec, enum node_stat_item idx)
                return node_page_state(lruvec_pgdat(lruvec), idx);
 
        i = memcg_stats_index(idx);
-       if (WARN_ONCE(IS_INVALID(i), "%s: missing stat item %d\n", __func__, idx))
+       if (WARN_ONCE(BAD_STAT_IDX(i), "%s: missing stat item %d\n", __func__, idx))
                return 0;
 
        pn = container_of(lruvec, struct mem_cgroup_per_node, lruvec);
@@ -395,7 +395,7 @@ unsigned long lruvec_page_state_local(struct lruvec *lruvec,
                return node_page_state(lruvec_pgdat(lruvec), idx);
 
        i = memcg_stats_index(idx);
-       if (WARN_ONCE(IS_INVALID(i), "%s: missing stat item %d\n", __func__, idx))
+       if (WARN_ONCE(BAD_STAT_IDX(i), "%s: missing stat item %d\n", __func__, idx))
                return 0;
 
        pn = container_of(lruvec, struct mem_cgroup_per_node, lruvec);
@@ -627,7 +627,7 @@ unsigned long memcg_page_state(struct mem_cgroup *memcg, int idx)
        long x;
        int i = memcg_stats_index(idx);
 
-       if (WARN_ONCE(IS_INVALID(i), "%s: missing stat item %d\n", __func__, idx))
+       if (WARN_ONCE(BAD_STAT_IDX(i), "%s: missing stat item %d\n", __func__, idx))
                return 0;
 
        x = READ_ONCE(memcg->vmstats->state[i]);
@@ -668,7 +668,7 @@ void __mod_memcg_state(struct mem_cgroup *memcg, enum memcg_stat_item idx,
        if (mem_cgroup_disabled())
                return;
 
-       if (WARN_ONCE(IS_INVALID(i), "%s: missing stat item %d\n", __func__, idx))
+       if (WARN_ONCE(BAD_STAT_IDX(i), "%s: missing stat item %d\n", __func__, idx))
                return;
 
        __this_cpu_add(memcg->vmstats_percpu->state[i], val);
@@ -681,7 +681,7 @@ unsigned long memcg_page_state_local(struct mem_cgroup *memcg, int idx)
        long x;
        int i = memcg_stats_index(idx);
 
-       if (WARN_ONCE(IS_INVALID(i), "%s: missing stat item %d\n", __func__, idx))
+       if (WARN_ONCE(BAD_STAT_IDX(i), "%s: missing stat item %d\n", __func__, idx))
                return 0;
 
        x = READ_ONCE(memcg->vmstats->state_local[i]);
@@ -700,7 +700,7 @@ static void __mod_memcg_lruvec_state(struct lruvec *lruvec,
        struct mem_cgroup *memcg;
        int i = memcg_stats_index(idx);
 
-       if (WARN_ONCE(IS_INVALID(i), "%s: missing stat item %d\n", __func__, idx))
+       if (WARN_ONCE(BAD_STAT_IDX(i), "%s: missing stat item %d\n", __func__, idx))
                return;
 
        pn = container_of(lruvec, struct mem_cgroup_per_node, lruvec);
@@ -816,7 +816,7 @@ void __count_memcg_events(struct mem_cgroup *memcg, enum vm_event_item idx,
        if (mem_cgroup_disabled())
                return;
 
-       if (WARN_ONCE(IS_INVALID(i), "%s: missing stat item %d\n", __func__, idx))
+       if (WARN_ONCE(BAD_STAT_IDX(i), "%s: missing stat item %d\n", __func__, idx))
                return;
 
        memcg_stats_lock();
@@ -829,7 +829,7 @@ unsigned long memcg_events(struct mem_cgroup *memcg, int event)
 {
        int i = memcg_events_index(event);
 
-       if (WARN_ONCE(IS_INVALID(i), "%s: missing stat item %d\n", __func__, event))
+       if (WARN_ONCE(BAD_STAT_IDX(i), "%s: missing stat item %d\n", __func__, event))
                return 0;
 
        return READ_ONCE(memcg->vmstats->events[i]);
@@ -839,7 +839,7 @@ unsigned long memcg_events_local(struct mem_cgroup *memcg, int event)
 {
        int i = memcg_events_index(event);
 
-       if (WARN_ONCE(IS_INVALID(i), "%s: missing stat item %d\n", __func__, event))
+       if (WARN_ONCE(BAD_STAT_IDX(i), "%s: missing stat item %d\n", __func__, event))
                return 0;
 
        return READ_ONCE(memcg->vmstats->events_local[i]);