| From: SeongJae Park <sj@kernel.org> |
| Subject: samples/damon/prcl: fix boot time enable crash |
| Date: Sun, 6 Jul 2025 12:32:03 -0700 |
| |
| If 'enable' parameter of the 'prcl' DAMON sample module is set at boot |
| time via the kernel command line, memory allocation is tried before the |
| slab is initialized. As a result kernel NULL pointer dereference BUG can |
| happen. Fix it by checking the initialization status. |
| |
| Link: https://lkml.kernel.org/r/20250706193207.39810-3-sj@kernel.org |
| Fixes: 2aca254620a8 ("samples/damon: introduce a skeleton of a smaple DAMON module for proactive reclamation") |
| Signed-off-by: SeongJae Park <sj@kernel.org> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| samples/damon/prcl.c | 10 ++++++++++ |
| 1 file changed, 10 insertions(+) |
| |
| --- a/samples/damon/prcl.c~samples-damon-prcl-fix-boot-time-enable-crash |
| +++ a/samples/damon/prcl.c |
| @@ -109,6 +109,8 @@ static void damon_sample_prcl_stop(void) |
| put_pid(target_pidp); |
| } |
| |
| +static bool init_called; |
| + |
| static int damon_sample_prcl_enable_store( |
| const char *val, const struct kernel_param *kp) |
| { |
| @@ -134,6 +136,14 @@ static int damon_sample_prcl_enable_stor |
| |
| static int __init damon_sample_prcl_init(void) |
| { |
| + int err = 0; |
| + |
| + init_called = true; |
| + if (enable) { |
| + err = damon_sample_prcl_start(); |
| + if (err) |
| + enable = false; |
| + } |
| return 0; |
| } |
| |
| _ |