日期范围
113
全部讨论数
其它分析 success作者:Ziyang Men2026/08/12 15:0315 封邮件

[PATCH v2 0/4] selftests: shared lib.bpf.mk for building BPF progs and skeletons

Ziyang Men 提出的4 patch 系列把 selftests/{bpf,sched_ext,hid}/ 中重复的 libbpf+bpftool+vmlinux.h+skeleton 工具链抽到共享片段 tools/testing/selftests/lib.bpf.mk,并新增 selftests/cgroup/test_memcg_stat_cross_cpu 验证 memcg BPF kfunc 与 rstat flush 在跨 CPU 场景下的正确性。维护者主要在 EXTRA_CFLAGS/OPT_FLAGS 透传、cgroup 测试选址与 bot CI 上提出反馈,作者承诺 ...

lore
Bugfix分析 success作者:luoliang2026/08/11 03:512 封邮件

[PATCH] selftests/sched_ext: Check skeleton open failure in exit test

sched_ext selftest 中 exit.c 没有像其它兄弟 selftest 那样在 exit__open() 返回 NULL 时立刻失败,导致下一行 SCX_ENUM_INIT 通过 skel->rodata 解引用空指针。本 patch 增加一行 SCX_FAIL_IF(!skel, "Failed to open") 与其他 selftest 风格对齐,已被 Tejun Heo 合入 sched_ext/for-7.3。

lore
其它重要分析 success作者:Andrea Righi2026/08/11 00:0620 封邮件

[PATCHSET v11 sched_ext/for-7.3] sched: Make proxy execution compatible with sched_ext

v11 系列通过新增 SCX_OPS_ENQ_BLOCKED 与 SCX_ENQ_BLOCKED 让 BPF 调度器可选地接收被阻塞的 proxy donor,并把 sched_ext 的回调、kfunc 视角由 rq->curr 拆分为 rq->donor,从而解开 SCHED_PROXY_EXEC 与 SCHED_CLASS_EXT 的构建时互斥。同时给出 kselftest 与 scx_qmap -X 演示选项,并修复 NOHZ 带宽与 running/stopping 配对的若干边角问题。

lore
Bugfix分析 success作者:Cui Jian2026/08/07 20:573 封邮件

[PATCH] sched_ext: Fix NULL dereference in find_parent_sched()

Cui Jian 提交补丁为 find_parent_sched() 增加 parent 的 NULL 检查,声称 BPF 传入 cgroup v1 ID 可触发内核崩溃。Zhan Xusheng 逐层论证该路径不可达:cgroup_get_from_id() 只在 v2 默认层级 kernfs root 查找,且 cgroup_is_descendant() 会因 root 不同而拒绝,v1 cgroup 从不设置 scx_sched。作者接受意见后重发,代码完全不变,仅把标题从 Fix NULL dereference 改为 Add NULL check、changelog 改为防御性加固...

lore
其它重要分析 success作者:Andrea Righi2026/08/06 17:0732 封邮件

[PATCHSET v10 sched_ext/for-7.3] sched: Make proxy execution compatible with sched_ext

Andrea Righi 提交的 v10 系列把 SCHED_PROXY_EXEC 与 SCHED_CLASS_EXT 由编译期互斥改为可同时开启。核心做法是引入 SCX_OPS_ENQ_BLOCKED capability,把 blocked donor 的入队决策交给 BPF 调度器,并在 rq->donor 与 rq->curr 之间严格区分调度上下文与执行上下文。Tejun Heo 关注代码移动与 PI 跨类切换等细节,sashiko-bot 指出 reject DSQ 锁路径与文档不一致。

lore
Bugfix重要分析 success作者:Tejun Heo2026/08/04 05:3717 封邮件

[PATCHSET v2 sched_ext/for-7.3] sched_ext: Bandwidth-limited rescue execution for stranded tasks

本系列为 sched_ext 子调度器新增 SCX_ENQ_RESCUE 救援执行路径:当任务可运行 cpu 全部落在调度器未持有的 cid 上时,kernel 在每 CPU 限定的带宽(默认 2% CPU 时间)下直接驱动任务,并按救援消耗驱逐真正过载的 sub-sched。同时重构 slice/dsq_vtime 写入协议,引入 SCX_TASK_PROTECTED 防止 kernel 授权的 slice 被 BPF 改写,并修复内部 enq_flags 校验、pinned 任务直派等并发与正确性问题。scx_qmap 作为示范调度器接入救援路径,提供 -B/-q 旋钮与统计。

lore
Bugfix重要分析 success作者:Tejun Heo2026/08/04 02:432 封邮件

[GIT PULL] sched_ext: Fixes for v7.2-rc6

sched_ext 为 v7.2-rc6 提交了四类 bugfix:子调度器 enable 失败路径的 use-after-free、cgroup/kernfs 锁序死锁、WAKE_SYNC 场景下 waker CPU 空闲标记错误,以及 numa 自测对睡眠任务 affinity 变化的处理。这些修复已由 pr-tracker-bot 合并进 torvalds/linux.git。

lore
Bugfix重要分析 success作者:Andrea Righi2026/08/04 01:015 封邮件

[PATCHSET v4 sched_ext/for-7.3] sched_ext: Fix idle CPU state initialization and validation

sched_ext 内置 idle mask 在 scheduler 启用时将所有 online CPU 标记为 idle,导致 busy CPU 被误报。v4 改为空初始化,依赖 bypass re-notification 路径填充真正 idle 的 CPU。同时重构 allowed_cpus selftest,用稳定的本地不变量替代竞态的远端 CPU 检查。已合入 for-7.3。

lore
Bugfix重要分析 success作者:Andrea Righi2026/08/03 13:475 封邮件

[PATCHSET v3 sched_ext/for-7.3] sched_ext: Fix idle CPU state initialization and validation

sched_ext 内置 idle mask 在调度器完全启用前将所有 online CPU 标记为 idle,导致 ops.init() 看到错误状态。本系列在 ops.init() 之前启用 idle 追踪并逐 CPU 刷新真实状态,同时将 allowed_cpus 自测从竞态的远程检查改为稳定的本地不变量验证。Tejun 提出了更简洁的替代方案(清空而非设置 idle bit),值得后续跟进。

lore
Bugfix重要分析 success作者:luoliang2026/08/03 04:204 封邮件

[PATCH] sched_ext: Set errno on ENABLING -> ENABLED transition failure

scx_root_enable_workfn() 在 ENABLING→ENABLED cmpxchg 失败时跳转 err_disable,但未设置 ret,导致错误日志输出 failed (0) 无意义。本 patch 在跳转前补设 ret=-EBUSY,与函数顶部其他状态守卫一致。已被 Tejun Heo 合入 sched_ext/for-7.3。

lore
Bugfix分析 success作者:luoliang2026/08/03 04:202 封邮件

[PATCH] sched_ext: Fix stale @cgroup_id in sched_ext_ops kernel-doc

sched_ext_ops 结构体的成员 cgroup_id 已被重命名为 sub_cgroup_id,但 kernel-doc 注释未同步,导致两处文档警告。本 patch 将 @cgroup_id 更新为 @sub_cgroup_id,已被 Tejun Heo 合入 sched_ext/for-7.3。

lore
其它重要分析 success作者:Tejun Heo2026/08/03 03:5118 封邮件

[PATCHSET sched_ext/for-7.3] sched_ext: Bandwidth-limited rescue execution for stranded tasks

本系列为 sched_ext 子调度器中因 CPU 亲和性与 cid 不匹配而搁浅的任务,新增内核侧的带宽受限救援执行机制。调度器在 insert 时标记 SCX_ENQ_RESCUE,内核将任务放入 rescue DSQ 以受限带宽运行,等待过久时升级为不可抢占的 protected execution。当救援队列持续过载时,逐出消耗救援资源最多的子调度器而非归咎于等待者。

lore
Bugfix重要分析 success作者:Andrea Righi2026/08/01 18:358 封邮件

[PATCHSET v2 sched_ext/for-7.3] sched_ext: Fix idle CPU state initialization and validation

sched_ext 内置 idle mask 在 ops.init() 前将所有 online CPU 标记为 idle,但 idle 追踪未启动,导致 busy CPU 被误报为 idle。本系列在调度器启用前开启 idle 追踪并逐 CPU 持 rq lock 刷新状态,同时将 allowed_cpus 自测从竞态的远程 CPU 检查改为稳定的本地不变量验证。v3 将合并静态键并可能扩展不变量检查范围。

lore
Bugfix重要分析 success作者:Andrea Righi2026/07/31 16:254 封邮件

[PATCH sched_ext/for-7.2-fixes] selftests/sched_ext: Make allowed_cpus idle validation race-free

sched_ext 的 allowed_cpus 自测在验证远程 CPU 的 idle 状态时存在本质竞态:远程 CPU 可在验证前被 idle re-pick 重新标记为 idle,导致误报。本 patch 将验证改为检查本地 CPU 的 idle 不变量(本地 CPU 不可能在本回调运行期间被 re-pick),并增加引导阶段刷新 idle mask 初始化状态,同时补充了 allowed domain 和 task affinity 的验证。

lore
Bugfix重要分析 success作者:Matt Fleming2026/07/30 20:194 封邮件

[PATCH] rcu-tasks: Defer IRQ-disabled callback enqueue to irq_work

修复 call_rcu_tasks_generic() 在 IRQ 禁用上下文中与 rq->lock 形成 ABBA 死锁的问题。通过无锁 llist + irq_work 将回调入队延迟到安全上下文执行。RCU maintainer 建议等待上游 call_rcu()/call_srcu() deferral 系列后再提交 v2,并指出 barrier 需排空所有队列及 CPU hotplug 场景需处理。

lore
Bugfix重要分析 success作者:Tejun Heo2026/07/28 05:2410 封邮件

[PATCHSET sched_ext/for-7.3] sched_ext: NMI-safe exit handling

sched_ext 的 exit 路径在 NMI 上下文中可死锁:scx_claim_exit() 持 scx_sched_lock 遍历子树,bstr kfuncs 持共享 spinlock 格式化消息。本系列将 ->aborting 扫描改为无锁 + 延迟传播、将 bstr exit 改为 claim-first 直接写入 winner 缓冲区,使 scx_bpf_error()/scx_bpf_exit() 可从 NMI 安全调用。同时让 hardlockup handler 直接从 NMI abort(自检测 lockup 可恢复),NMI kick 不再静默丢弃,scx_link_s...

lore
Bugfix重要分析 success作者:Tejun Heo2026/07/28 04:026 封邮件

[PATCH v3 sched_ext/for-7.3] sched_ext: Bound per-task reenqueues and eject the owning scheduler

修复 sched_ext 中 reenqueue irq_work 自我重触发导致 stall watchdog 被阻塞的硬锁死问题。将 per-CPU 仅限 local DSQ 的重入队上限泛化为 per-task 计数器,覆盖所有重入队来源,超限时精确弹出所属调度器而非整个层级。v3 增加了 scx_disable_task() 中 reenq_cnt 的清零,防止计数器跨调度器残留。

lore
Bugfix重要分析 success作者:Tejun Heo2026/07/27 03:494 封邮件

[PATCH sched_ext/for-7.3] sched_ext: Bound per-task reenqueues and eject the owning scheduler

修复 sched_ext 中 reenqueue 无限循环导致 CPU 锁死的缺陷。旧代码仅对 local DSQ 重入队有 per-cpu 上限,cap rejection 场景无限制,irq_work 自重触发可阻塞 stall watchdog。新方案引入 per-task reenq_cnt,在所有重入队路径的统一漏斗处递增,超限后弹出所属调度器。v2 优化了事件计数时机,v3 将修复 reenq_cnt 在调度类切换时的残留问题并更新文档。

lore
Bugfix分析 success作者:Kuba Piecuch2026/07/26 14:383 封邮件

[PATCH sched_ext/for-7.2-fixes] sched_ext: mark waker CPU busy when selected in WAKE_SYNC case

SCX 的 idle tracking 在 WAKE_SYNC 场景下选中 waker CPU 时未将其标为 busy,导致 allowed_cpus selftest 失败。补丁在 scx_select_cpu_dfl() 补上 scx_idle_test_and_clear_cpu(),已被 Tejun Heo 合入 for-7.2-fixes。仍存在极小概率的 pick_task_idle 竞态。

lore
Bugfix分析 success作者:luoliang2026/07/26 04:442 封邮件

[PATCH] sched_ext: Fix incorrect SCX_PICK_IDLE_CPU_* flag prefix in kernel-doc

修正 idle.c 中三处 kernel-doc 注释将 %SCX_PICK_IDLE_CPU_* 错写为不存在的枚举前缀,改为与 scx_pick_idle_cpu_flags 成员一致的 %SCX_PICK_IDLE_*。已由 Tejun Heo 合入 sched_ext/for-7.3。

lore
其它分析 success作者:Tejun Heo2026/07/26 04:415 封邮件

[PATCHSET sched_ext/for-7.3] sched_ext: Sparse annotation cleanups

为 sched_ext 中三类 __rcu 指针的裸读取添加合规标注:cgrp->scx_sched 通过 scx_cgroup_sched() 声明三锁保护,scx_root 通过 scx_root_protected_live/protected() 声明 live 不变式或锁排他,dsq->first_task 用 rcu_access_pointer() 做身份比较。全部无功能变更,已合入 for-7.3。

lore
其它重要分析 success作者:Andrea Righi2026/07/26 00:2618 封邮件

[PATCHSET v9 sched_ext/for-7.3] sched: Make proxy execution compatible with sched_ext

Andrea Righi 发布 PATCHSET v9,共 14 个补丁,移除 SCHED_PROXY_EXEC 与 SCHED_CLASS_EXT 的构建期互斥。在核心调度器侧把 rq->donor 与 rq->curr 拆开,新增 SCX_OPS_ENQ_BLOCKED 能力位让 BPF scheduler 显式选择是否接管 blocked donor,并同步修复 NOHZ 带宽检查、远端 DSQ 迁移竞态、ops.running/stopping 配对等问题。配套提供 enq_blocked selftest 和 scx_qmap -B 演示选项。

lore
Bugfix重要分析 success作者:Tejun Heo2026/07/25 06:198 封邮件

[PATCHSET v2 sched_ext/for-7.3] sched_ext: Follow-up fixes and missing cap enforcement

本系列修复两个问题:用户态工具在 exit_req 与 RESTART 同时存在时陷入无限重启循环;sub-scheduler 的 cid-addressed reenq、kick 和 cpuperf 操作缺少权限检查,无 cap 的 sub-sched 可触发他人 CPU 的 IPI 和频率调整。Patch 1 修复 restart 逻辑,Patch 2-3 给 reenq/kick 加 SCX_CAP_BASE 门控并计数拒绝,Patch 4 重构 cpuperf setter,Patch 5 新增 SCX_CAP_PERF 门控 cpuperf 并同步返回结果。

lore
Bugfix重要分析 success作者:Tejun Heo2026/07/25 03:0710 封邮件

[PATCHSET sched_ext/for-7.3] sched_ext: Follow-up fixes and missing cap enforcement

本系列修复 sched_ext 工具在重启等待期忽略 exit_req 导致无限循环的 bug,并堵住子调度器三个权限漏洞:reenq IPI、kick 拒绝和 cidperf cpufreq 操控无 cap 检查。新增 SCX_CAP_PERF 作为独立 cpufreq 权限轴,cidperf_set 通过版本化 v2 kfunc 同步返回拒绝结果。所有拒绝操作均有事件计数器可观测。

lore
Bugfix分析 success作者:Randy Dunlap2026/07/24 02:053 封邮件

[PATCH] sched_ext: repair kernel-doc comments

补丁修复 kernel/sched/ext/ext.c 中 6 处 kernel-doc 注释缺陷:为 finish_dispatch、scx_rcu_cpu_stall、scx_hardlockup 补齐缺失参数描述,并将 3 个版本化 BPF kfunc 的注释函数名从公开别名改为带 ___v2 后缀的 C 定义名,消除构建警告。Tejun Heo 已合入 sched_ext/for-7.3。

lore
Bugfix重要分析 success作者:Kuba Piecuch2026/07/24 02:052 封邮件

[PATCH sched_ext/for-7.2-fixes] selftests/sched_ext: Handle sleeping task affinity changes in numa test

当睡眠任务的 CPU affinity 在睡眠期间被修改后,task_cpu(p) 可能指向已不在 cpus_ptr 中的 CPU,导致 NUMA node 选定后找不到合法 CPU,sched_ext 框架报 "invalid CPU -16" 并使调度器异常退出。补丁在 numa_select_cpu() 中检测 cpumask 不一致时回退 prev_cpu 兜底,Tejun Heo 已 apply 到 for-7.2-fixes。

lore
Bugfix重要分析 success作者:Andrea Righi2026/07/24 00:4828 封邮件

[PATCHSET v8 sched_ext/for-7.3] sched: Make proxy execution compatible with sched_ext

PATCHSET v8 用 12 个补丁让 CONFIG_SCHED_PROXY_EXEC 与 CONFIG_SCHED_CLASS_EXT 不再互斥,方法是把 rq->donor 与 rq->curr 拆分、由 BPF 通过 SCX_OPS_ENQ_BLOCKED 显式接收 blocked donor,并修复了 set_task_cpu 假告警、consume_remote_task 迁移竞态、NOHZ 带宽核算错、running/stopping 不配对等副作用。John Stultz 已 ack 多处,Tejun Heo 提出用 class callback 替换直接调用、把 GDSQ_...

lore
Bugfix分析 success作者:Cui Jian2026/07/23 02:355 封邮件

[PATCH] sched_ext: Fix stale errno in scx_sub_enable_workfn()

scx_sub_enable_workfn() 中嵌套深度检查和 cgroup online 检查两条错误路径跳到 err_disable 时未设置 ret,导致 fallback 日志打印 errno=0。补丁分别设置 -EINVAL 和 -ENODEV 使 fallback 报告真实错误码。当前因 scx_error 的 first-error-wins 机制而无害,但 fallback 机制本身是坏的,需要修复。

lore
其它分析 success作者:Cheng-Yang Chou2026/07/23 02:154 封邮件

[PATCH sched_ext/for-7.3] tools/sched_ext: scx_pair: Convert to sched_switch TP

将 scx_pair 的 ops.cpu_acquire/release() 废弃回调替换为 tp_btf/sched_switch tracepoint 边沿检测,用 p->prio 判断高优先级抢占,消除加载时的废弃警告。idle→高优先级直跳不算 release,sched_setscheduler() 的盲区与旧回调一致。已由 Tejun Heo 合入 sched_ext/for-7.3。

lore
Bugfix重要分析 success作者:Tejun Heo2026/07/22 16:3510 封邮件

[PATCHSET v2 sched_ext/for-7.3] sched_ext: Sub-scheduler and cid fixes

本系列修复 sched_ext 子调度器层级下 runnable stall 归咎错误和 bypass 期间无效 CPU 选择,并将 cid 映射表从原地填充改为私有构建+RCU 发布,消除 BPF kfunc 竞态读取未初始化或撕裂数据的风险。Patch 4 经 v1→v2→v3 三版迭代,最终已合入 for-7.3。

lore
其它重要分析 success作者:Andrea Righi2026/07/21 13:1533 封邮件

[PATCHSET v7 sched_ext/for-7.3] sched: Make proxy execution compatible with sched_ext

Andrea Righi 发布 v7 patchset,引入 SCX_OPS_ENQ_BLOCKED 让 BPF 调度器接管 mutex-blocked donor 的 admission,统一 rq->donor(调度上下文)与 rq->curr(执行上下文)口径,并修掉 NOHZ bandwidth 漏判、consume_remote_task TOCTOU 竞争、running/stopping 配对三处回归。Tejun 要求 TOCTOU 修复合围在 proxy-exec 条件内;John Stultz 提出 scx_pair 走 wakeup 路径仍会触发 WARN_ON 与 scx...

lore
Bugfix重要分析 success作者:Tejun Heo2026/07/20 17:416 封邮件

[PATCHSET sched_ext/for-7.3] sched_ext: Sub-scheduler and cid fixes

Tejun Heo 提交三个 sched_ext bugfix:修正 bypass 子调度器 stall 归责从任务 owner 改为 DSQ owner;bypass 下跳过无效的默认 CPU 选择直接返回 prev_cpu;防护 cid kfunc 在首次 enable 竞态窗口的 NULL 表解引用,返回 -EINVAL 或全负 topo。涉及 ext.c、cid.c、cid.h,+42/−12。

lore
Bugfix重要分析 success作者:Tejun Heo2026/07/20 15:4314 封邮件

[PATCHSET sched_ext/for-7.3] sched_ext: Cgroup migration and op delivery for sub-schedulers

cgroup 迁移跨子调度器边界时任务不 re-home,导致 use-after-free 和错误调度。本系列新增 cgroup task migration notifier 实现三阶段 re-home(init → commit → cancel),并将 cgroup op 按 task_group topology 投递到对应 sched 而非固定 root。子调度器 enable/disable 时 cgroup 权属双向交接,失败时沿链向上退回至 root。

lore
其它分析 success作者:Tejun Heo2026/07/20 15:375 封邮件

[PATCHSET sched_ext/for-7.3] sched_ext: Rename the cid-form cgroup ops to cpuctl_*

sched_ext cid 形式中 cgroup_*() ops 实际操作的是 cpu controller 而非 cgroup2 层级,趁 ABI 尚可变更将其重命名为 cpuctl_*。同时拆出 SCX_OPS_CID_OPEN 宏,使 cid-form skeleton 不再依赖 cpu-form 成员名的 compat 清零路径。已由 maintainer 应用到 for-7.3 分支。

lore
Bugfix重要分析 success作者:Tejun Heo2026/07/18 15:409 封邮件

[PATCHSET sched_ext/for-7.2-fixes] sched_ext: Assorted sub-scheduler and cgroup fixes

Tejun Heo 提交四项 sched_ext 子调度器/cgroup bugfix:禁止非 enable 路径设 disallow、修复 cgroup 三方锁死锁(v6.18+ stable)、跳过未链接子调度器的 teardown、门控非 ext class 任务 enable。Andrea Righi 测试中发现另一个 pre-existing use-after-free(cgroup 迁移不更新 p->scx.sched),Tejun 确认已有修复系列在准备中。本系列已获 Reviewed-by 并合入 for-7.2-fixes。

lore
Bugfix重要分析 success作者:Andrea Righi2026/07/17 14:0418 封邮件

[PATCHSET v6 sched_ext/for-7.3] sched: Make proxy execution compatible with sched_ext

Andrea Righi 的 v6 共 11 个 patch,目标是拆掉 CONFIG_SCHED_PROXY_EXEC 与 CONFIG_SCHED_CLASS_EXT 的 Kconfig 互斥。核心做法是把 sched_ext 中所有策略与记账从 rq->curr 改为 rq->donor(donor 提供调度上下文,curr 只是执行上下文),并新增 SCX_OPS_ENQ_BLOCKED 让 BPF 调度器显式接管 blocked donor 的准入与排序。附带修复 NOHZ CFS bandwidth 检查看错任务(带 Fixes 标签)、ops.running/stopping 不...

lore
Bugfix重要分析 success作者:Zhimin Feng2026/07/16 19:293 封邮件

[PATCH sched_ext] sched/ext: Keep tick enabled for finite-slice tasks

该补丁修复 nohz_full CPU 上有限时间片 SCX 任务可能错误停掉 scheduler tick 的问题。根因是 set_next_task_scx() 运行时 rq->curr 仍可能指向旧任务,导致旧的 tick dependency 更新路径做出错误判断。新逻辑直接根据即将运行的任务设置 TICK_DEP_BIT_SCHED,同时保留无限时间片任务的 tickless 能力。

lore
Bugfix重要分析 success作者:Tejun Heo2026/07/16 08:006 封邮件

[PATCHSET v2 sched_ext/for-7.3] sched_ext: Sub-scheduler follow-ups

Patch 1 将 sub-scheduler 卸载时 ecaps 同步的无界 msleep 等待改为直接从 llist 摘除节点,消除潜在 stall。Patches 2-3 是前置重构(拆分 inlines.h、CONFIG 门控 sub_dispatch_prev)。Patch 4 引入 scx_has_subs static key,让无子调度器的常见场景跳过热路径中的 sub-sched 书簿开销。全部已合入 for-7.3。

lore
Bugfix重要分析 success作者:Tejun Heo2026/07/16 01:457 封邮件

[PATCHSET sched_ext/for-7.3] sched_ext: Sub-scheduler follow-ups

该系列修复 sched_ext 子调度器销毁时可能因等待未来 balance 而无限停滞的问题,改为在 rq lock 下直接移除排队的 ecaps 同步节点。同时引入 scx_has_subs static key,使没有子调度器的常见系统跳过层级能力、同步和 idle 通知 bookkeeping。自动化审查指出 Patch 2 移动函数后可能形成 internal.h 与 cid.h 的循环依赖,仍需解决或通过构建验证。

lore
Bugfix重要分析 success作者:Tejun Heo2026/07/15 22:5314 封邮件

[PATCHSET v2] sched/psi: Fix psimon fork deadlock and rtpoll_timer UAF

Tejun Heo 的 v2 系列把 psimon kthread 的 fork 移出 cgroup_mutex,解决 sched_ext enable 与 pressure_write 的死锁;patch 2 在 psi_cgroup_free() 用 timer_shutdown_sync() 关停 rtpoll_timer,根治调度热路径重 arm 造成的 UAF。Hannes、Suren 已 review,Matt Fleming 测试通过。Tejun 最终合入 cgroup/for-7.2-fixes 并 Cc stable。

lore
Bugfix分析 success作者:zhidao su (Xiaomi)2026/07/15 07:564 封邮件

[PATCH] sched_ext: Validate cid override before updating tables

本 patch 将 scx_bpf_cid_override() 的验证与写入拆为两遍循环,避免验证失败中途导致查找表处于半更新状态。但拆分引入了 TOCTOU 竞态风险,且 Tejun Heo 指出 for-7.3 已有含 kmemdup() 的更完善实现,本 patch 无需 respin。

lore
Bugfix分析 success作者:luoliang2026/07/15 06:092 封邮件

[PATCH] tools/sched_ext: scx_qmap: Fix stale API name in comment

v6.13 将 scx_bpf_dispatch[_vtime]_from_dsq 重命名为 scx_bpf_dsq_move[_vtime],但 scx_qmap 中一处注释仍用旧名,代码已用新名。本 patch 将注释同步更新,消除文档与代码不一致,已被 Tejun Heo 合入 sched_ext/for-7.3。

lore
其它重要分析 success作者:Tejun Heo2026/07/14 16:2743 封邮件

[PATCHSET v5 sched_ext/for-7.3] sched_ext: Capability-based CPU delegation for sub-schedulers

本补丁系列为 sched_ext 子调度器引入基于 shard 级 capability 的 CPU 委托机制,使父调度器能通过 grant/revoke 精细控制子调度器的 CPU 访问权限。核心设计是委托为状态而非调用——capability 以 per-shard cmask 存储,热路径通过 per-cpu effective caps 单次读取判断。系列还覆盖 kick、抢占、idle 报告等路径的 cap 执行和拒绝机制,以及驱逐不良子调度器的 kill kfunc。

lore
Bugfix重要分析 success作者:Tejun Heo2026/07/14 07:162 封邮件

[GIT PULL] sched_ext: Fixes for v7.2-rc3

Tejun Heo 向 Linus 提交 sched_ext v7.2-rc3 集中 bugfix pull,涵盖子调度器生命周期 use-after-free、dispatch 路径锁竞态、回调与任务状态残留、nohz_full tick 缺失及杂项修复。pr-tracker-bot 确认已合入 torvalds/linux。

lore
RFC重要分析 success作者:Tejun Heo2026/07/14 05:4518 封邮件

[PATCHSET SLOP RFC 0/6] bpf: make arena pointers first-class kfunc and struct_ops arguments

Tejun Heo 提出 RFC 让 BPF arena 指针通过 __arena 后缀在 kfunc 和 struct_ops 边界自动翻译地址,消除手工偏移/cast 重复代码。kfunc 方向由 verifier fixup 注入 rebasing 指令,struct_ops 方向由 entry prologue 注入反向 rebasing,NULL 保留。v2 新增了 __arena 参数禁止 tail call 的限制,并修正注释风格。

lore
Bugfix分析 success作者:luoliang2026/07/14 02:353 封邮件

[PATCH] tools/sched_ext: scx_flatcg: Fix uninitialized stats on allocation failure

本 patch 修复了 commit cabd76bbc036 在 scx_flatcg 中引入的回归:fcg_read_stats() 把 memset(stats,0) 放在 calloc() 失败检查之后,导致 calloc 失败时 stats 永远不会被写入,调用方读到未初始化的栈内存,造成 UB 并污染下一周期的 baseline。把 memset 上移到 calloc 检查之前即可保证 stats 始终被清零。Andrea Righi 给出评审,Tejun Heo 当天将其 pick 进 sched_ext/for-7.3。

lore
其它重要分析 success作者:Andrea Righi2026/07/14 00:4917 封邮件

[PATCHSET v5 sched_ext/for-7.3] sched: Make proxy execution compatible with sched_ext

Andrea Righi 发起 v5 系列,解开 SCHED_PROXY_EXEC 与 SCHED_CLASS_EXT 的 Kconfig 互斥,把 mutex-blocked donor 的处理交给 BPF 调度器(通过新标志 SCX_OPS_ENQ_BLOCKED)显式 opt-in。系列同时修齐 rq->curr/rq->donor 视图分离带来的 callback 配对、TOCTOU 与迁移策略问题,并附带 enq_blocked selftest 与 scx_qmap 的 -B 示例。sashiko-bot 标记了 PI de-boost 漏点、blocked donor 入队策略与...

lore
其它重要分析 success作者:Andrea Righi2026/07/13 14:4522 封邮件

[PATCHSET v4 sched_ext/for-7.3] sched: Make proxy execution compatible with sched_ext

Andrea Righi 提交 v4 补丁系列,让 proxy-exec 与 sched_ext 可以在同一内核中同时启用。通过引入 SCX_OPS_ENQ_BLOCKED 标志与 scx_bpf_task_proxy_cpu/cid() kfunc,BPF 调度器可以显式认领 blocked donor 并决定其派发时机与位置。系列同时修复了 ops.running/stopping 配对、consume_remote_task 的 TOCTOU race 以及 rq->curr/donor 拆分后的 DSQ 记账问题。John Stultz 在 review 中已发现 scx_pair 触...

lore
Bugfix重要分析 success作者:Matt Fleming2026/07/13 01:498 封邮件

[PATCH] sched_ext: Fix deadlock with PSI trigger creation

Matt Fleming 报告在 128-CPU AMD EPYC 上跑 scx_lavd 时,遇到 scx enable 与 cgroup PSI trigger 写并发触发的 ABBA 死锁,并提交 patch 调换 scx_fork_rwsem 与 cgroup_mutex 的获取顺序。sashiko-bot 指出同类锁序在 disable 路径同样存在;Tejun Heo 提出更彻底的修复,把 psimon kthread 的 fork 从 cgroup_mutex 中拆出,并在 v2 中合并 rtpoll_timer UAF 修复。讨论揭示了 a5b98009f16d 引入的锁依赖问...

lore
Bugfix重要分析 success作者:Matt Fleming2026/07/12 07:575 封邮件

[PATCH 6.18.y] rcu-tasks: Defer IRQ-disabled callback enqueue to irq_work

针对 6.18.y 的死锁修复:call_rcu_tasks_generic() 在 IRQs 关闭(持 rq->lock)时抢 cbs_gbl_lock,与 tasks-RCU wakeup 路径构成 ABBA 死锁。补丁将 IRQ-disabled 调用者改走无锁 llist 旁路,由 hard irq_work 稍后排干,fast path 不变。Paul McKenney 指出无法干净应用到 mainline,要求 forward-port,Matt 同意。

lore
每页
上一页2 / 3下一页