On Thu, Mar 06, 2025 at 10:54:12AM +0800, Kairui Song wrote: > On Thu, Mar 6, 2025 at 10:32 AM Muchun Song <songmuchun@xxxxxxxxxxxxx> wrote: > > > > The commit 6769183166b3 has removed the parameter of id from > > swap_cgroup_record() and get the memcg id from > > mem_cgroup_id(folio_memcg(folio)). However, the caller of it > > may update a different memcg's counter instead of > > folio_memcg(folio). E.g. in the caller of mem_cgroup_swapout(), > > @swap_memcg could be different with @memcg and update the counter > > of @swap_memcg, but swap_cgroup_record() records the wrong memcg's > > ID. When it is uncharged from __mem_cgroup_uncharge_swap(), the > > swap counter will leak since the wrong recorded ID. Fix it by > > bring the parameter of id back. > > > > Fixes: 6769183166b3 ("mm/swap_cgroup: decouple swap cgroup recording and clearing") > > Cc: <stable@xxxxxxxxxxxxxxx> > > Signed-off-by: Muchun Song <songmuchun@xxxxxxxxxxxxx> Acked-by: Johannes Weiner <hannes@xxxxxxxxxxx> Looking at the original commit again, we also should do this: ---