Commit 7b6216b
sched_ext: Fix scx_enable() crash on helper kthread creation failure
A crash was observed when the sched_ext selftests runner was
terminated with Ctrl+\ while test 15 was running:
NIP [c00000000028fa58] scx_enable.constprop.0+0x358/0x12b0
LR [c00000000028fa2c] scx_enable.constprop.0+0x32c/0x12b0
Call Trace:
scx_enable.constprop.0+0x32c/0x12b0 (unreliable)
bpf_struct_ops_link_create+0x18c/0x22c
__sys_bpf+0x23f8/0x3044
sys_bpf+0x2c/0x6c
system_call_exception+0x124/0x320
system_call_vectored_common+0x15c/0x2ec
kthread_run_worker() returns an ERR_PTR() on failure rather than NULL,
but the current code in scx_alloc_and_add_sched() only checks for a NULL
helper. Incase of failure on SIGQUIT, the error is not handled in
scx_alloc_and_add_sched() and scx_enable() ends up dereferencing an
error pointer.
Error handling is fixed in scx_alloc_and_add_sched() to propagate
PTR_ERR() into ret, so that scx_enable() jumps to the existing error
path, avoiding random dereference on failure.
Fixes: bff3b5a ("sched_ext: Move disable machinery into scx_sched")
Cc: [email protected] # v6.16+
Reported-and-tested-by: Samir Mulani <[email protected]>
Signed-off-by: Saket Kumar Bhaskar <[email protected]>
Reviewed-by: Emil Tsalapatis <[email protected]>
Reviewed-by: Andrea Righi <[email protected]>
Reviewed-by: Vishal Chourasia <[email protected]>
Signed-off-by: Tejun Heo <[email protected]>1 parent 36c6f3c commit 7b6216b
1 file changed
+4
-1
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4479 | 4479 | | |
4480 | 4480 | | |
4481 | 4481 | | |
4482 | | - | |
| 4482 | + | |
| 4483 | + | |
4483 | 4484 | | |
| 4485 | + | |
| 4486 | + | |
4484 | 4487 | | |
4485 | 4488 | | |
4486 | 4489 | | |
| |||
0 commit comments