Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

mm/damon/sysfs-scheme: cleanup access_pattern subdirs on scheme dir setup failure

When a DAMOS-scheme DAMON sysfs directory setup fails after setup of
access_pattern/ directory, subdirectories of access_pattern/ 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-5-sj@kernel.org
Fixes: 9bbb820a5bd5 ("mm/damon/sysfs: support DAMOS quotas")
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>

authored by

SeongJae Park and committed by
Andrew Morton
392b3d9d dc7e1d75

+3 -2
+3 -2
mm/damon/sysfs-schemes.c
··· 2152 2152 return err; 2153 2153 err = damos_sysfs_set_dests(scheme); 2154 2154 if (err) 2155 - goto put_access_pattern_out; 2155 + goto rmdir_put_access_pattern_out; 2156 2156 err = damon_sysfs_scheme_set_quotas(scheme); 2157 2157 if (err) 2158 2158 goto put_dests_out; ··· 2190 2190 put_dests_out: 2191 2191 kobject_put(&scheme->dests->kobj); 2192 2192 scheme->dests = NULL; 2193 - put_access_pattern_out: 2193 + rmdir_put_access_pattern_out: 2194 + damon_sysfs_access_pattern_rm_dirs(scheme->access_pattern); 2194 2195 kobject_put(&scheme->access_pattern->kobj); 2195 2196 scheme->access_pattern = NULL; 2196 2197 return err;