All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3] mm/damon/core: Fix return value from damos_wmark_metric_value
@ 2024-04-28 19:14 Alex Rusuf
  2024-04-28 19:18 ` SeongJae Park
  0 siblings, 1 reply; 2+ messages in thread
From: Alex Rusuf @ 2024-04-28 19:14 UTC (permalink / raw)
  To: damon; +Cc: sj

damos_wmark_metric_value's return value is 'unsigned long', so
returning -EINVAL as 'unsigned long' may turn out to be
very different from the expected one (using 2's complement) and
treat as usual matric's value. So, fix that, checking if
returned value is not 0.

Fixes: ee801b7dd782 ("mm/damon/schemes: activate schemes based on a watermarks mechanism")
Signed-off-by: Alex Rusuf <yorha.op@gmail.com>
---
 mm/damon/core.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/mm/damon/core.c b/mm/damon/core.c
index 6d503c1c125e..172095e68c5d 100644
--- a/mm/damon/core.c
+++ b/mm/damon/core.c
@@ -1480,12 +1480,14 @@ static bool kdamond_need_stop(struct damon_ctx *ctx)
 	return true;
 }
 
-static unsigned long damos_wmark_metric_value(enum damos_wmark_metric metric)
+static int damos_get_wmark_metric_value(enum damos_wmark_metric metric,
+					unsigned long *metric_value)
 {
 	switch (metric) {
 	case DAMOS_WMARK_FREE_MEM_RATE:
-		return global_zone_page_state(NR_FREE_PAGES) * 1000 /
+		*metric_value = global_zone_page_state(NR_FREE_PAGES) * 1000 /
 		       totalram_pages();
+		return 0;
 	default:
 		break;
 	}
@@ -1500,10 +1502,9 @@ static unsigned long damos_wmark_wait_us(struct damos *scheme)
 {
 	unsigned long metric;
 
-	if (scheme->wmarks.metric == DAMOS_WMARK_NONE)
+	if (damos_get_wmark_metric_value(scheme->wmarks.metric, &metric))
 		return 0;
 
-	metric = damos_wmark_metric_value(scheme->wmarks.metric);
 	/* higher than high watermark or lower than low watermark */
 	if (metric > scheme->wmarks.high || scheme->wmarks.low > metric) {
 		if (scheme->wmarks.activated)
-- 
2.42.0


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH v3] mm/damon/core: Fix return value from damos_wmark_metric_value
  2024-04-28 19:14 [PATCH v3] mm/damon/core: Fix return value from damos_wmark_metric_value Alex Rusuf
@ 2024-04-28 19:18 ` SeongJae Park
  0 siblings, 0 replies; 2+ messages in thread
From: SeongJae Park @ 2024-04-28 19:18 UTC (permalink / raw)
  To: Alex Rusuf; +Cc: SeongJae Park, damon

Hi Alex,

On Sun, 28 Apr 2024 22:14:39 +0300 Alex Rusuf <yorha.op@gmail.com> wrote:

> damos_wmark_metric_value's return value is 'unsigned long', so
> returning -EINVAL as 'unsigned long' may turn out to be
> very different from the expected one (using 2's complement) and
> treat as usual matric's value. So, fix that, checking if
> returned value is not 0.
> 
> Fixes: ee801b7dd782 ("mm/damon/schemes: activate schemes based on a watermarks mechanism")
> Signed-off-by: Alex Rusuf <yorha.op@gmail.com>

Thank you for patiently revisioning the patch!

Reviewed-by: SeongJae Park <sj@kernel.org>


Thanks,
SJ

[...]

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2024-04-28 19:18 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-04-28 19:14 [PATCH v3] mm/damon/core: Fix return value from damos_wmark_metric_value Alex Rusuf
2024-04-28 19:18 ` SeongJae Park

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.