From: David Laight <david.laight.linux@gmail.com>
To: "Lorenzo Stoakes (Oracle)" <ljs@kernel.org>
Cc: Qi Zheng <qi.zheng@linux.dev>,
hannes@cmpxchg.org, hughd@google.com, mhocko@suse.com,
roman.gushchin@linux.dev, shakeel.butt@linux.dev,
muchun.song@linux.dev, david@kernel.org, ziy@nvidia.com,
harry.yoo@oracle.com, yosry.ahmed@linux.dev,
imran.f.khan@oracle.com, kamalesh.babulal@oracle.com,
axelrasmussen@google.com, yuanchu@google.com, weixugc@google.com,
chenridong@huaweicloud.com, mkoutny@suse.com,
akpm@linux-foundation.org, hamzamahfooz@linux.microsoft.com,
apais@linux.microsoft.com, lance.yang@linux.dev, bhe@redhat.com,
usamaarif642@gmail.com, linux-mm@kvack.org,
linux-kernel@vger.kernel.org,
Qi Zheng <zhengqi.arch@bytedance.com>
Subject: Re: [PATCH v2 2/4] mm: memcontrol: change val type to long in __mod_memcg_{lruvec_}state()
Date: Thu, 26 Mar 2026 14:37:36 +0000 [thread overview]
Message-ID: <20260326143736.12d22e38@pumpkin> (raw)
In-Reply-To: <ac9c3d78-6244-424f-82b0-d5501145484c@lucifer.local>
On Thu, 26 Mar 2026 09:19:29 +0000
"Lorenzo Stoakes (Oracle)" <ljs@kernel.org> wrote:
> On Wed, Mar 25, 2026 at 10:13:23PM +0800, Qi Zheng wrote:
> > From: Qi Zheng <zhengqi.arch@bytedance.com>
> >
> > The __mod_memcg_state() and __mod_memcg_lruvec_state() functions are also
> > used to reparent non-hierarchical stats. In this scenario, the values
> > passed to them are accumulated statistics that might be extremely large
> > and exceed the upper limit of a 32-bit integer.
> >
> > Change the val parameter type from int to long in these functions and
> > their corresponding tracepoints (memcg_rstat_stats) to prevent potential
> > overflow issues.
Won't that are be true on 32bit systems?
Which means the underlying values need to be u64 not long.
David
> >
> > Signed-off-by: Qi Zheng <zhengqi.arch@bytedance.com>
>
> LGTM, so:
>
> Reviewed-by: Lorenzo Stoakes (Oracle) <ljs@kernel.org>
>
> > ---
> > include/trace/events/memcg.h | 10 +++++-----
> > mm/memcontrol.c | 8 ++++----
> > 2 files changed, 9 insertions(+), 9 deletions(-)
> >
> > diff --git a/include/trace/events/memcg.h b/include/trace/events/memcg.h
> > index dfe2f51019b4c..51b62c5931fc2 100644
> > --- a/include/trace/events/memcg.h
> > +++ b/include/trace/events/memcg.h
> > @@ -11,14 +11,14 @@
> >
> > DECLARE_EVENT_CLASS(memcg_rstat_stats,
> >
> > - TP_PROTO(struct mem_cgroup *memcg, int item, int val),
> > + TP_PROTO(struct mem_cgroup *memcg, int item, long val),
> >
> > TP_ARGS(memcg, item, val),
> >
> > TP_STRUCT__entry(
> > __field(u64, id)
> > __field(int, item)
> > - __field(int, val)
> > + __field(long, val)
> > ),
> >
> > TP_fast_assign(
> > @@ -27,20 +27,20 @@ DECLARE_EVENT_CLASS(memcg_rstat_stats,
> > __entry->val = val;
> > ),
> >
> > - TP_printk("memcg_id=%llu item=%d val=%d",
> > + TP_printk("memcg_id=%llu item=%d val=%ld",
> > __entry->id, __entry->item, __entry->val)
> > );
> >
> > DEFINE_EVENT(memcg_rstat_stats, mod_memcg_state,
> >
> > - TP_PROTO(struct mem_cgroup *memcg, int item, int val),
> > + TP_PROTO(struct mem_cgroup *memcg, int item, long val),
> >
> > TP_ARGS(memcg, item, val)
> > );
> >
> > DEFINE_EVENT(memcg_rstat_stats, mod_memcg_lruvec_state,
> >
> > - TP_PROTO(struct mem_cgroup *memcg, int item, int val),
> > + TP_PROTO(struct mem_cgroup *memcg, int item, long val),
> >
> > TP_ARGS(memcg, item, val)
> > );
> > diff --git a/mm/memcontrol.c b/mm/memcontrol.c
> > index 7fb9cbc10dfbb..4a78550f6174e 100644
> > --- a/mm/memcontrol.c
> > +++ b/mm/memcontrol.c
> > @@ -527,7 +527,7 @@ unsigned long lruvec_page_state_local(struct lruvec *lruvec,
> >
> > #ifdef CONFIG_MEMCG_V1
> > static void __mod_memcg_lruvec_state(struct mem_cgroup_per_node *pn,
> > - enum node_stat_item idx, int val);
> > + enum node_stat_item idx, long val);
> >
> > void reparent_memcg_lruvec_state_local(struct mem_cgroup *memcg,
> > struct mem_cgroup *parent, int idx)
> > @@ -784,7 +784,7 @@ static int memcg_page_state_unit(int item);
> > * Normalize the value passed into memcg_rstat_updated() to be in pages. Round
> > * up non-zero sub-page updates to 1 page as zero page updates are ignored.
> > */
> > -static int memcg_state_val_in_pages(int idx, int val)
> > +static long memcg_state_val_in_pages(int idx, long val)
> > {
> > int unit = memcg_page_state_unit(idx);
> >
> > @@ -831,7 +831,7 @@ static inline void get_non_dying_memcg_end(void)
> > #endif
> >
> > static void __mod_memcg_state(struct mem_cgroup *memcg,
> > - enum memcg_stat_item idx, int val)
> > + enum memcg_stat_item idx, long val)
> > {
> > int i = memcg_stats_index(idx);
> > int cpu;
> > @@ -896,7 +896,7 @@ void reparent_memcg_state_local(struct mem_cgroup *memcg,
> > #endif
> >
> > static void __mod_memcg_lruvec_state(struct mem_cgroup_per_node *pn,
> > - enum node_stat_item idx, int val)
> > + enum node_stat_item idx, long val)
> > {
> > struct mem_cgroup *memcg = pn->memcg;
> > int i = memcg_stats_index(idx);
> > --
> > 2.20.1
> >
>
next prev parent reply other threads:[~2026-03-26 14:37 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-25 14:13 [PATCH v2 0/4] fix unexpected type conversions and potential overflows Qi Zheng
2026-03-25 14:13 ` [PATCH v2 1/4] mm: memcontrol: correct the type of stats_updates to unsigned long Qi Zheng
2026-03-25 15:28 ` Lorenzo Stoakes (Oracle)
2026-03-26 2:32 ` Qi Zheng
2026-03-26 8:05 ` Lorenzo Stoakes (Oracle)
2026-03-26 8:19 ` Harry Yoo (Oracle)
2026-03-26 8:20 ` Qi Zheng
2026-03-25 14:13 ` [PATCH v2 2/4] mm: memcontrol: change val type to long in __mod_memcg_{lruvec_}state() Qi Zheng
2026-03-26 9:19 ` Lorenzo Stoakes (Oracle)
2026-03-26 14:37 ` David Laight [this message]
2026-03-27 2:37 ` Qi Zheng
2026-03-25 14:13 ` [PATCH v2 3/4] mm: memcontrol: correct the nr_pages parameter type of mem_cgroup_update_lru_size() Qi Zheng
2026-03-25 14:13 ` [PATCH v2 4/4] mm: memcontrol: fix unexpected massive positive number in memcg_state_val_in_pages() Qi Zheng
2026-03-26 9:16 ` Lorenzo Stoakes (Oracle)
2026-03-26 9:21 ` Lorenzo Stoakes (Oracle)
2026-03-26 9:32 ` Qi Zheng
2026-03-26 9:38 ` Lorenzo Stoakes (Oracle)
2026-03-27 0:06 ` Andrew Morton
2026-03-27 2:42 ` Qi Zheng
2026-03-27 3:13 ` Andrew Morton
2026-03-27 7:51 ` Lorenzo Stoakes (Oracle)
2026-03-25 14:24 ` [PATCH v2 0/4] fix unexpected type conversions and potential overflows Qi Zheng
2026-03-25 23:57 ` Andrew Morton
2026-03-26 0:28 ` Andrew Morton
2026-03-26 2:30 ` Qi Zheng
2026-03-26 3:27 ` Andrew Morton
2026-03-26 7:14 ` Michal Hocko
2026-03-26 7:51 ` Harry Yoo (Oracle)
2026-03-26 8:18 ` Michal Hocko
2026-03-26 9:22 ` Lorenzo Stoakes (Oracle)
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260326143736.12d22e38@pumpkin \
--to=david.laight.linux@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=apais@linux.microsoft.com \
--cc=axelrasmussen@google.com \
--cc=bhe@redhat.com \
--cc=chenridong@huaweicloud.com \
--cc=david@kernel.org \
--cc=hamzamahfooz@linux.microsoft.com \
--cc=hannes@cmpxchg.org \
--cc=harry.yoo@oracle.com \
--cc=hughd@google.com \
--cc=imran.f.khan@oracle.com \
--cc=kamalesh.babulal@oracle.com \
--cc=lance.yang@linux.dev \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=ljs@kernel.org \
--cc=mhocko@suse.com \
--cc=mkoutny@suse.com \
--cc=muchun.song@linux.dev \
--cc=qi.zheng@linux.dev \
--cc=roman.gushchin@linux.dev \
--cc=shakeel.butt@linux.dev \
--cc=usamaarif642@gmail.com \
--cc=weixugc@google.com \
--cc=yosry.ahmed@linux.dev \
--cc=yuanchu@google.com \
--cc=zhengqi.arch@bytedance.com \
--cc=ziy@nvidia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.