Commit f5717c9
sched_ext: Use SCX_CALL_OP_TASK in task_tick_scx
Now when we use scx_bpf_task_cgroup() in ops.tick() to get the cgroup of
the current task, the following error will occur:
scx_foo[3795244] triggered exit kind 1024:
runtime error (called on a task not being operated on)
The reason is that we are using SCX_CALL_OP() instead of SCX_CALL_OP_TASK()
when calling ops.tick(), which triggers the error during the subsequent
scx_kf_allowed_on_arg_tasks() check.
SCX_CALL_OP_TASK() was first introduced in commit 3645402 ("sched_ext:
Track tasks that are subjects of the in-flight SCX operation") to ensure
task's rq lock is held when accessing task's sched_group. Since ops.tick()
is marked as SCX_KF_TERMINAL and task_tick_scx() is protected by the rq
lock, we can use SCX_CALL_OP_TASK() to avoid the above issue. Similarly,
the same changes should be made for ops.disable() and ops.exit_task(), as
they are also protected by task_rq_lock() and it's safe to access the
task's task_group.
Fixes: 3645402 ("sched_ext: Track tasks that are subjects of the in-flight SCX operation")
Signed-off-by: Chuyi Zhou <zhouchuyi@bytedance.com>
Signed-off-by: Tejun Heo <tj@kernel.org>1 parent 2e2006c commit f5717c9
1 file changed
Lines changed: 3 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3899 | 3899 | | |
3900 | 3900 | | |
3901 | 3901 | | |
3902 | | - | |
| 3902 | + | |
3903 | 3903 | | |
3904 | 3904 | | |
3905 | 3905 | | |
| |||
4046 | 4046 | | |
4047 | 4047 | | |
4048 | 4048 | | |
4049 | | - | |
| 4049 | + | |
4050 | 4050 | | |
4051 | 4051 | | |
4052 | 4052 | | |
| |||
4075 | 4075 | | |
4076 | 4076 | | |
4077 | 4077 | | |
4078 | | - | |
| 4078 | + | |
4079 | 4079 | | |
4080 | 4080 | | |
4081 | 4081 | | |
| |||
0 commit comments