When damon_sysfs_add_target couldn't find proper task, New allocated damon_target structure isn't registered yet, So, it's impossible to free new allocated one by damon_sysfs_destroy_targets. By calling additional damon_free_target when find_get_pid function, Fix possible memory leak. Signed-off-by: Levi Yun <ppbuk5246@xxxxxxxxx> --- mm/damon/sysfs.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mm/damon/sysfs.c b/mm/damon/sysfs.c index 7488e27c87c3..28ed07d26d55 100644 --- a/mm/damon/sysfs.c +++ b/mm/damon/sysfs.c @@ -2184,8 +2184,11 @@ static int damon_sysfs_add_target(struct damon_sysfs_target *sys_target, return -ENOMEM; if (damon_target_has_pid(ctx)) { t->pid = find_get_pid(sys_target->pid); - if (!t->pid) + if (!t->pid) { + damon_free_target(t); + goto destroy_targets_out; + } } damon_add_target(ctx, t); err = damon_sysfs_set_regions(t, sys_target->regions); -- 2.35.1