summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorWanwu Li <liwanwu@kylinos.cn>2026-08-27 16:07:38 +0800
committerTejun Heo <tj@kernel.org>2026-08-31 06:47:39 -1000
commit84590dbb9f3519e865ee8396494ac7186b625fef (patch)
tree0164e48c511b0e25632b6eab5e61d950e8082cd4 /tools
parentb6ee92d7f7f0498d1f776d0b125a2f6bcedf0891 (diff)
downloadlinux-84590dbb9f3519e865ee8396494ac7186b625fef.tar.gz
linux-84590dbb9f3519e865ee8396494ac7186b625fef.zip
sched_ext: Check bpf_timer_start return values in scx_qmap
monitor_timerfn(), lowpri_timerfn() and round_robin_timerfn() ignore bpf_timer_start()'s return value: a failed re-arm silently stops the periodic heartbeat, starving every task parked in LOWPRI_DSQ (lowpri) or freezing cid rotation (round-robin). Check the returns and raise scx_bpf_error(), matching the init paths. Signed-off-by: Wanwu Li <liwanwu@kylinos.cn> Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'tools')
-rw-r--r--tools/sched_ext/scx_qmap.bpf.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/tools/sched_ext/scx_qmap.bpf.c b/tools/sched_ext/scx_qmap.bpf.c
index 5bb8b90a275a..9f6e61d7ca07 100644
--- a/tools/sched_ext/scx_qmap.bpf.c
+++ b/tools/sched_ext/scx_qmap.bpf.c
@@ -1246,7 +1246,8 @@ static int monitor_timerfn(void *map, int *key, struct bpf_timer *timer)
scx_read_event(&events, SCX_EV_BYPASS_ACTIVATE));
}
- bpf_timer_start(timer, ONE_SEC_IN_NS, 0);
+ if (bpf_timer_start(timer, ONE_SEC_IN_NS, 0))
+ scx_bpf_error("failed to re-arm stats timer");
return 0;
}
@@ -1268,7 +1269,8 @@ struct {
static int lowpri_timerfn(void *map, int *key, struct bpf_timer *timer)
{
scx_bpf_dsq_reenq(LOWPRI_DSQ, 0);
- bpf_timer_start(timer, LOWPRI_INTV_NS, 0);
+ if (bpf_timer_start(timer, LOWPRI_INTV_NS, 0))
+ scx_bpf_error("failed to re-arm lowpri timer");
return 0;
}
@@ -1747,7 +1749,8 @@ static void rr_advance(void)
static int round_robin_timerfn(void *map, int *key, struct bpf_timer *timer)
{
rr_advance();
- bpf_timer_start(timer, round_robin_ns, 0);
+ if (bpf_timer_start(timer, round_robin_ns, 0))
+ scx_bpf_error("failed to re-arm round-robin timer");
return 0;
}