| From 9814cc832b88bd040fc2a1817c2b5469d0f7e862 Mon Sep 17 00:00:00 2001 |
| From: SeongJae Park <sj@kernel.org> |
| Date: Wed, 24 Dec 2025 18:30:35 -0800 |
| Subject: mm/damon/sysfs: cleanup attrs subdirs on context dir setup failure |
| |
| From: SeongJae Park <sj@kernel.org> |
| |
| commit 9814cc832b88bd040fc2a1817c2b5469d0f7e862 upstream. |
| |
| When a context DAMON sysfs directory setup is failed after setup of attrs/ |
| directory, subdirectories of attrs/ directory are not cleaned up. As a |
| result, DAMON sysfs interface is nearly broken until the system reboots, |
| and the memory for the unremoved directory is leaked. |
| |
| Cleanup the directories under such failures. |
| |
| Link: https://lkml.kernel.org/r/20251225023043.18579-3-sj@kernel.org |
| Fixes: c951cd3b8901 ("mm/damon: implement a minimal stub for sysfs-based DAMON interface") |
| Signed-off-by: SeongJae Park <sj@kernel.org> |
| Cc: chongjiapeng <jiapeng.chong@linux.alibaba.com> |
| Cc: <stable@vger.kernel.org> # 5.18.x |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| mm/damon/sysfs.c | 5 +++-- |
| 1 file changed, 3 insertions(+), 2 deletions(-) |
| |
| --- a/mm/damon/sysfs.c |
| +++ b/mm/damon/sysfs.c |
| @@ -1772,7 +1772,7 @@ static int damon_sysfs_context_add_dirs( |
| |
| err = damon_sysfs_context_set_targets(context); |
| if (err) |
| - goto put_attrs_out; |
| + goto rmdir_put_attrs_out; |
| |
| err = damon_sysfs_context_set_schemes(context); |
| if (err) |
| @@ -1782,7 +1782,8 @@ static int damon_sysfs_context_add_dirs( |
| put_targets_attrs_out: |
| kobject_put(&context->targets->kobj); |
| context->targets = NULL; |
| -put_attrs_out: |
| +rmdir_put_attrs_out: |
| + damon_sysfs_attrs_rm_dirs(context->attrs); |
| kobject_put(&context->attrs->kobj); |
| context->attrs = NULL; |
| return err; |