| From: Shakeel Butt <shakeel.butt@linux.dev> |
| Subject: memcg: replace memcg ID idr with xarray |
| Date: Thu, 15 Aug 2024 08:54:02 -0700 |
| |
| fix error path in mem_cgroup_alloc(), per Dan |
| |
| Link: https://lkml.kernel.org/r/20240815155402.3630804-1-shakeel.butt@linux.dev |
| Signed-off-by: Shakeel Butt <shakeel.butt@linux.dev> |
| Suggested-by: Matthew Wilcox <willy@infradead.org> |
| Reviewed-by: Roman Gushchin <roman.gushchin@linux.dev> |
| Reviewed-by: Matthew Wilcox (Oracle) <willy@infradead.org> |
| Acked-by: Johannes Weiner <hannes@cmpxchg.org> |
| Reviewed-by: Muchun Song <muchun.song@linux.dev> |
| Acked-by: Michal Hocko <mhocko@suse.com> |
| Cc: Dan Carpenter <dan.carpenter@linaro.org> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| mm/memcontrol.c | 5 +++-- |
| 1 file changed, 3 insertions(+), 2 deletions(-) |
| |
| --- a/mm/memcontrol.c~memcg-replace-memcg-id-idr-with-xarray-v2 |
| +++ a/mm/memcontrol.c |
| @@ -3496,16 +3496,17 @@ static struct mem_cgroup *mem_cgroup_all |
| struct mem_cgroup *memcg; |
| int node, cpu; |
| int __maybe_unused i; |
| - long error = -ENOMEM; |
| + long error; |
| |
| memcg = kzalloc(struct_size(memcg, nodeinfo, nr_node_ids), GFP_KERNEL); |
| if (!memcg) |
| - return ERR_PTR(error); |
| + return ERR_PTR(-ENOMEM); |
| |
| error = xa_alloc(&mem_cgroup_ids, &memcg->id.id, NULL, |
| XA_LIMIT(1, MEM_CGROUP_ID_MAX), GFP_KERNEL); |
| if (error) |
| goto fail; |
| + error = -ENOMEM; |
| |
| memcg->vmstats = kzalloc(sizeof(struct memcg_vmstats), |
| GFP_KERNEL_ACCOUNT); |
| _ |