mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git
synced 2026-10-31 22:34:33 +01:00
sched_ext: Record an error on errno-only sub-enable failure
scx_sub_enable_workfn() has several failure paths that only return an errno
(e.g. -ENOMEM from an allocation) and jump to err_disable without calling
scx_error(). scx_flush_disable_work() runs the disable, and thus ops.exit(),
only when an error has been recorded, so an errno-only failure leaves the
half-initialized sub-scheduler linked.
Record an error at the err_disable sink so every errno-only failure runs the
disable path.
Fixes: ebeca1f930 ("sched_ext: Introduce cgroup sub-sched support")
Signed-off-by: Tejun Heo <[email protected]>
Reviewed-by: Andrea Righi <[email protected]>
This commit is contained in:
1 parent
cfe950d79f
commit
db4e9defd2
1 file changed
+6
@@ -7746,6 +7746,12 @@ err_unlock_and_disable:
|
||||
percpu_up_write(&scx_fork_rwsem);
|
||||
err_disable:
|
||||
mutex_unlock(&scx_enable_mutex);
|
||||
/*
|
||||
* Some enable failures only return an errno (e.g. -ENOMEM from an
|
||||
* allocation) without calling scx_error(). Record it so
|
||||
* scx_flush_disable_work() runs the disable and ops.exit() fires.
|
||||
*/
|
||||
scx_error(sch, "scx_sub_enable() failed (%d)", ret);
|
||||
scx_flush_disable_work(sch);
|
||||
cmd->ret = 0;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user