From e73a67d49a8cd5e2607d7065292f65dcc457f756 Mon Sep 17 00:00:00 2001 From: Lipeng Sang Date: Tue, 14 Mar 2023 21:12:02 +0800 Subject: [PATCH] mm: memcontrol: fix cannot alloc the maximum memcg ID stable inclusion from stable-v5.19.17 commit be740503ed03ea04ca362330baf082e6a38fe462 category: bugfix bugzilla: https://gitee.com/openeuler/kernel/issues/I6HGFP CVE: NA Reference: https://github.com/torvalds/linux/commit/be740503ed03ea04ca362330baf082e6a38fe462 -------------------------------- commit be740503ed03ea04ca362330baf082e6a38fe462 upstream. The idr_alloc() does not include @max ID. So in the current implementation, the maximum memcg ID is 65534 instead of 65535. It seems a bug. So fix this. Link: https://lkml.kernel.org/r/20220228122126.37293-15-songmuchun@bytedance.com Signed-off-by: Muchun Song Cc: Alex Shi Cc: Anna Schumaker Cc: Chao Yu Cc: Dave Chinner Cc: Fam Zheng Cc: Jaegeuk Kim Cc: Johannes Weiner Cc: Kari Argillander Cc: Matthew Wilcox (Oracle) Cc: Michal Hocko Cc: Qi Zheng Cc: Roman Gushchin Cc: Shakeel Butt Signed-off-by: Lipeng Sang --- mm/memcontrol.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index fd40fef49e45..b242f469e686 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -5349,8 +5349,7 @@ static struct mem_cgroup *mem_cgroup_alloc(void) memcg = &memcg_ext->memcg; memcg->id.id = idr_alloc(&mem_cgroup_idr, NULL, - 1, MEM_CGROUP_ID_MAX, - GFP_KERNEL); + 1, MEM_CGROUP_ID_MAX + 1, GFP_KERNEL); if (memcg->id.id < 0) { error = memcg->id.id; goto fail; -- Gitee