[PATCH] selftests/sched_ext: Fix bpf_link leak on early return in prog_run
Liang Luo 发现 sched_ext selftest 的 prog_run 用例在断言失败时会跳过 bpf_link__destroy,导致 BPF 调度器不卸载、后续测试 attach 失败。改用统一 goto out 清理模式后,资源回收与返回路径解耦,Tejun 已合入 sched_ext/for-7.3。
北京时间全部历史数据
最近同步:2026/08/28 15:52
Liang Luo 发现 sched_ext selftest 的 prog_run 用例在断言失败时会跳过 bpf_link__destroy,导致 BPF 调度器不卸载、后续测试 attach 失败。改用统一 goto out 清理模式后,资源回收与返回路径解耦,Tejun 已合入 sched_ext/for-7.3。
Liang Luo 提交的 1 行注释修复 patch,把 kernel/sched/ext/ext.c 中 scx_bpf_dsq_insert() kfunc 注释里误写的参数名 @dsp_id 改回与函数签名一致的 @dsq_id。Andrea Righi 当日给出 Acked-by,Tejun Heo 当晚即将其合入 sched_ext/for-7.3 分支,无功能行为变更。
Tejun Heo 的 v3 patchset 把 sched_ext sub-scheduler 的能力模型从 dispatch 路径扩展到 enqueue/kick/occupancy/idle 全链路:引入 SCX_CAP_ENQ_IMMED/ENQ/PREEMPT 三档能力、按拓扑对齐的 per-shard 锁、per-cpu 有效能力快照(doorbell 在 balance() 顶部折叠),能力不足的任务走 reject DSQ 重入 enqueue;附带若干准备性修复(ops->priv 过早发布 UAF、cmask_subset 语义不一致、kobject sysfs 时序等)...
Andrea Righi 提交 v3 修复了 sched_ext 在 nohz_full CPU 上 finite-slice 任务切换时 tick 依赖可能被错误禁用的问题。核心做法是在 set_next_task_scx() 中把 infinite/finite 路径拆开、对 finite 任务无条件声明 tick 依赖,并在 scx_can_stop_tick() 中忽略 nr_running 为 0 时的过期状态。配套新增的 kselftest 验证 infinite→finite 与 finite→finite 跨 idle 切换下 tick 投递正确,最终被 Tejun Heo 合...
Andrea Righi 的 v3 patch 通过新增 switch_rq_lock() helper,把 sched_ext 中所有 rq 锁的切换与 scx_locked_rq() 的跟踪更新绑定为原子操作,避免嵌套 SCX_CALL_OP 路径上 update_locked_rq() 恢复一把已不持有的 rq 触发 lockdep 警告。该 patch 同时覆盖 move_remote_task_to_local_dsq、dispatch_to_local_dsq 和 scx_dsq_move 三处切锁点,被 Tejun Heo 接收进 sched_ext/for-7.2-fixes ...