damon/sysfs: fix possible memleak on damon_sysfs_add_target

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 damon_add_target as soon as allocating new target, Fix this
possible memory leak.

Link: https://lkml.kernel.org/r/20220926160611.48536-1-sj@kernel.org
Fixes: a61ea561c871 ("mm/damon/sysfs: link DAMON for virtual address spaces monitoring")
Signed-off-by: Levi Yun <ppbuk5246@gmail.com>
Signed-off-by: SeongJae Park <sj@kernel.org>
Reviewed-by: SeongJae Park <sj@kernel.org>
Cc: <stable@vger.kernel.org> [5.17.x]
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

authored by Levi Yun and committed by Andrew Morton 1c8e2349 30c19366

Changed files
+1 -1
mm
damon
+1 -1
mm/damon/sysfs.c
··· 2182 2182 2183 2183 if (!t) 2184 2184 return -ENOMEM; 2185 + damon_add_target(ctx, t); 2185 2186 if (damon_target_has_pid(ctx)) { 2186 2187 t->pid = find_get_pid(sys_target->pid); 2187 2188 if (!t->pid) 2188 2189 goto destroy_targets_out; 2189 2190 } 2190 - damon_add_target(ctx, t); 2191 2191 err = damon_sysfs_set_regions(t, sys_target->regions); 2192 2192 if (err) 2193 2193 goto destroy_targets_out;