| From: Xin Hao <xhao@linux.alibaba.com> |
| Subject: mm/damon: modify damon_rand() macro to static inline function |
| |
| damon_rand() cannot be implemented as a macro. |
| |
| Example: |
| damon_rand(a++, b); |
| |
| The value of 'a' will be incremented twice, This is obviously |
| unreasonable, So there fix it. |
| |
| Link: https://lkml.kernel.org/r/110ffcd4e420c86c42b41ce2bc9f0fe6a4f32cd3.1638795127.git.xhao@linux.alibaba.com |
| Fixes: b9a6ac4e4ede ("mm/damon: adaptively adjust regions") |
| Signed-off-by: Xin Hao <xhao@linux.alibaba.com> |
| Reported-by: Andrew Morton <akpm@linux-foundation.org> |
| Reviewed-by: SeongJae Park <sj@kernel.org> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| include/linux/damon.h | 5 ++++- |
| 1 file changed, 4 insertions(+), 1 deletion(-) |
| |
| --- a/include/linux/damon.h~mm-damon-modify-damon_rand-macro-to-static-inline-function |
| +++ a/include/linux/damon.h |
| @@ -19,7 +19,10 @@ |
| #define DAMOS_MAX_SCORE (99) |
| |
| /* Get a random number in [l, r) */ |
| -#define damon_rand(l, r) (l + prandom_u32_max(r - l)) |
| +static inline unsigned long damon_rand(unsigned long l, unsigned long r) |
| +{ |
| + return l + prandom_u32_max(r - l); |
| +} |
| |
| /** |
| * struct damon_addr_range - Represents an address region of [@start, @end). |
| _ |