2023-11-06 23:34:33

by SeongJae Park

[permalink] [raw]
Subject: [PATCH 0/3] mm/damon/sysfs: fix unhandled return values

Some of DAMON sysfs interface code is not handling return values from
some functions. As a result, confusing user input handling or
NULL-dereference is possible. Check those properly.

Please note that these patches are not cleanly applicable on mm-unstable
since mm-unstable has dropped the mainline-merged patches and rebased on
v6.6, while some DAMON patches that these patches are depend on are
merged in the mainline after v6.6. I confirmed these patches can
cleanly applied on latest mainline, or mm-stable-2023-11-01-14-33.

SeongJae Park (3):
mm/damon/sysfs: check error from damon_sysfs_update_target()
mm/damon/sysfs-schemes: handle tried regions sysfs directory
allocation failure
mm/damon/sysfs-schemes: handle tried region directory allocation
failure

mm/damon/sysfs-schemes.c | 5 +++++
mm/damon/sysfs.c | 4 +++-
2 files changed, 8 insertions(+), 1 deletion(-)


base-commit: 3496e8e0a1eeabb738105c09e575495fa78914bb
--
2.34.1


2023-11-06 23:36:36

by SeongJae Park

[permalink] [raw]
Subject: [PATCH 1/3] mm/damon/sysfs: check error from damon_sysfs_update_target()

damon_sysfs_update_target() returns error code for failures, but its
caller, damon_sysfs_set_targets() is ignoring that. The update function
seems making no critical change in case of such failures, but the
behavior will look like DAMON sysfs is silently ignoring or only
partially accepting the user input. Fix it.

Fixes: 19467a950b49 ("mm/damon/sysfs: remove requested targets when online-commit inputs")
Cc: <[email protected]> # 5.19.x
Signed-off-by: SeongJae Park <[email protected]>
---

Note that yet another fix[1] should be applied before this.

[1] https://lore.kernel.org/all/[email protected]/

mm/damon/sysfs.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/mm/damon/sysfs.c b/mm/damon/sysfs.c
index 1dfa96d4de99..7472404456aa 100644
--- a/mm/damon/sysfs.c
+++ b/mm/damon/sysfs.c
@@ -1203,8 +1203,10 @@ static int damon_sysfs_set_targets(struct damon_ctx *ctx,

damon_for_each_target_safe(t, next, ctx) {
if (i < sysfs_targets->nr) {
- damon_sysfs_update_target(t, ctx,
+ err = damon_sysfs_update_target(t, ctx,
sysfs_targets->targets_arr[i]);
+ if (err)
+ return err;
} else {
if (damon_target_has_pid(ctx))
put_pid(t->pid);
--
2.34.1

2023-11-06 23:51:37

by SeongJae Park

[permalink] [raw]
Subject: Re: [PATCH 0/3] mm/damon/sysfs: fix unhandled return values

On Mon, 6 Nov 2023 23:34:05 +0000 SeongJae Park <[email protected]> wrote:

> Some of DAMON sysfs interface code is not handling return values from
> some functions. As a result, confusing user input handling or
> NULL-dereference is possible. Check those properly.
>
> Please note that these patches are not cleanly applicable on mm-unstable
> since mm-unstable has dropped the mainline-merged patches and rebased on
> v6.6, while some DAMON patches that these patches are depend on are
> merged in the mainline after v6.6. I confirmed these patches can
> cleanly applied on latest mainline, or mm-stable-2023-11-01-14-33.

I just checked mm-unstable has just updated, and confirmed these patches can
cleanly applied.


Thanks,
SJ

[...]