sched discussion
[PATCH 6.6 000/484] 6.6.148-rc1 review
LLM 分析
Linux 稳定分支:6.6.148-rc1 跨子系统修复合集
系列概况
- 标题:
[PATCH 6.6 000/484] 6.6.148-rc1 review - 作者:Greg Kroah-Hartman
- 目标版本:Linux 6.6.148-rc1(stable 候选)
- 规模:484 个 patch,覆盖 stable 分支 linux-6.6.y
- 来源:stable-review 周期帖(虽由 sched 频道发出,但内容是 stable-rc 总集)
- 基础消息 ID:
20260730141423.392222816@linuxfoundation.org - 回复截止:Sat, 01 Aug 2026 14:13:41 +0000
- 完整性:包含 1 篇封面 + 484 篇 patch + 17 篇社区回复
补丁目的
一次性把 6.6 stable 分支从 rc 上一轮以来累计的回归修复、资源泄漏、race condition、安全加固、驱动更新,全部打包成 rc1 给发行版和下游做集成验证。
关键实现
虽然规模很大,但线索可以归并到几条主轴:
- CAN 协议栈(patch 13-22):bcm / isotp 一系列 KCSAN 报告的数据竞争——
bcm_rx_update_lock与bcm_tx_lock拆分,新增if_detected跟踪 ANYDEV 模式下首个匹配接口,netdev_tracker 取代 by-ifindex 查找,避免NETDEV_UNREGISTER期间的 use-after-free 与 UAF 过滤器。 - drm/virtio(patch 004):去掉
display_info_cb里的 hotplug 通知,改由wait_event_timeout等回调写完 connector 数据再发 hotplug,避免 fbdev probe 与 dequeue 之间的 clientlist_mutex 死锁。 - KVM(patch 010-012、475-476、484):MMU vendor 模块卸载后 MMIO 页表指针悬空、
VMCLEAR后立即隐藏 shadow VMCS、TSC deadline 仅在KVM_RUN路径复位、SVMasid_generation在 CPU 上线时 bump 防 ASID 碰撞。 - wireless / wifi:
mac80211、ath11k、ath12k、iwlwifi、carl9170、ath6kl等大量 OOB read 修复,多数为对固件报告字段先校验再 memcpy。 - RDMA(patch 037-050):dmabuf pinned umem、revoke 锁、可撤销 umem 导入接口等一组补丁,为
ib_umem_dmabuf_get_pinned_and_lock系列奠基。 - core / mm:workqueue 拆分
system_percpu_wq/system_dfl_wq、taskstats用for_each_thread、DAMON 区间校验、ZONE_DEVICE compound page 的 migratetype。 - misc 驱动:ASoC mediatek mt8195 ETDM 链接补全、thunderbolt XDomain 引用保持、host1x BO 缓存映射 use-after-free、rxrpc 锁域升级为 IRQ 禁用。
类比
把 6.6.148-rc1 想成一辆跑了半年的家用车的「年度大保养 + 召回清单」:
- 一次拉进车间 484 个项目(CAN 总线线束磨损、KVM 引擎管理、wifi 天线阻抗),每一项都是已发现的 bug。
- 保养前车能开,但车上仪表盘偶发闪、车门异响、座椅抖——对应内核里的 KCSAN 警告、dead trace、regression。
- Greg KH 就是车间主管,把单子摊在长桌上请各家子系统负责人来「认领+核对」,确认这 484 项不会让哪家的车型直接趴窝,才允许出厂。
stable review thread topology (logical)
+---------------------------+
| 0/484 cover (Greg KH) |
+-------------+-------------+
|
v
+---------------------------+
| patch 001..484 | (one-shot delivery, no in-thread reply on most)
+----+----------+-----------+
| |
v v
replies (0/484) patches reviewed downstream
| |
+--------+ +----------------+
| Florian| | Ilya (ceph) |
| Peter | | Wentao Guan |
| Miguel | | Johan Hovold |
| Shuah | | Greg KH, etc. |
+--------+ +----------------+
single CAN-bcm patch 013/484 critical-section flow
bcm_rx_handler():
spin_lock_bh(bcm_rx_update_lock)
if (rtr_frame) memcpy(&rtrframe, op->frames, cfsiz)
op->flags & RX_FILTER_ID -> bcm_rx_update_and_send(...)
spin_unlock_bh(bcm_rx_update_lock)
bcm_rx_setup():
spin_lock_bh(bcm_rx_update_lock)
memcpy(op->frames, new_frames, nframes*cfsiz)
if (SETTIMER) op->kt_ival1/2 = ...
spin_unlock_bh(bcm_rx_update_lock)
Patch 概览
| 范围 | 主题 | 代表 patch |
|---|---|---|
| 网络协议 | CAN bcm/isotp race、vxlan/geneve/netdev_put、tcp、ipv6、netfilter pipapo | 13-22, 405-419 |
| 驱动 | wifi 全家、amdgpu、thunderbolt、host1x、iserdma、RDMA | 037-050, 122-129, 200-225 |
| KVM / virt | MMU UAF、shadow VMCS、ASID、TSC deadline | 010-012, 475-484 |
| 安全 | ksmbd DACL、ceph ioctl caps、smb/client fallocate | 302-355 |
| 内存 / mm | DAMON range 校验、ZONE_DEVICE、mm_init | 478-479 |
| 工具链 | workqueue 拆分、taskstats 改写、seqlock KASAN | 085-089, 429-430 |
Highlight:风险与注意点
- mmc vub300 三连 patch(456/457/458):456 是断开时的 use-after-free,457 仅重命名错误标签、458 是 probe 失败的 use-after-free;Greg 之后又在 -rc2 把 457 重命名为更直观的形式(Wentao Guan 提的 issue),意味着这组 patch 在 6.6 stable 上还有命名分歧需要闭环。
- CAN 协议栈 11 个连续 patch:bcm 的
if_detected+bcm_rx_update_lock矩阵跨多个 patch 演化(013/014/015/016/017/018/019/020/021),单独 cherry-pick 容易漏spin_lock_init。 - virtio-gpu deadlock fix(004) 是合入 stable 后才暴露:
wait_event_timeout(5*HZ)在系统卡顿时会拉长 fbdev hotplug,最坏情况下屏会迟 5 秒响应。 - RDMA dmabuf 撤销系列(037-042) 改动了
ib_umem的核心 API:老驱动如果 cherry-pick 单个 patch 就会编不过,需要一起回。
一句话总结
这是 Greg KH 为 6.6 stable 推出的例行大合集,484 个 patch 一次性同步过去一个开发周期内的回归/资源/UAF 修复,主题横跨 CAN/KVM/wifi/RDMA/drm/security,重点关注 CAN-bcm 的并发重构、drm/virtio 的 hotplug 死锁、mmc vub300 的 UAF,以及一系列 KCSAN/Syzkaller 报告的安全修复。