0/502 已展开

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 总集)
  • 基础消息 ID20260730141423.392222816@linuxfoundation.org
  • 回复截止:Sat, 01 Aug 2026 14:13:41 +0000
  • 完整性:包含 1 篇封面 + 484 篇 patch + 17 篇社区回复

补丁目的

一次性把 6.6 stable 分支从 rc 上一轮以来累计的回归修复、资源泄漏、race condition、安全加固、驱动更新,全部打包成 rc1 给发行版和下游做集成验证。

关键实现

虽然规模很大,但线索可以归并到几条主轴:

  1. CAN 协议栈(patch 13-22):bcm / isotp 一系列 KCSAN 报告的数据竞争——bcm_rx_update_lockbcm_tx_lock 拆分,新增 if_detected 跟踪 ANYDEV 模式下首个匹配接口,netdev_tracker 取代 by-ifindex 查找,避免 NETDEV_UNREGISTER 期间的 use-after-free 与 UAF 过滤器。
  2. drm/virtio(patch 004):去掉 display_info_cb 里的 hotplug 通知,改由 wait_event_timeout 等回调写完 connector 数据再发 hotplug,避免 fbdev probe 与 dequeue 之间的 clientlist_mutex 死锁。
  3. KVM(patch 010-012、475-476、484):MMU vendor 模块卸载后 MMIO 页表指针悬空、VMCLEAR 后立即隐藏 shadow VMCS、TSC deadline 仅在 KVM_RUN 路径复位、SVM asid_generation 在 CPU 上线时 bump 防 ASID 碰撞。
  4. wireless / wifimac80211ath11kath12kiwlwificarl9170ath6kl 等大量 OOB read 修复,多数为对固件报告字段先校验再 memcpy。
  5. RDMA(patch 037-050):dmabuf pinned umem、revoke 锁、可撤销 umem 导入接口等一组补丁,为 ib_umem_dmabuf_get_pinned_and_lock 系列奠基。
  6. core / mm:workqueue 拆分 system_percpu_wq/system_dfl_wqtaskstatsfor_each_thread、DAMON 区间校验、ZONE_DEVICE compound page 的 migratetype。
  7. 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 pipapo13-22, 405-419
驱动wifi 全家、amdgpu、thunderbolt、host1x、iserdma、RDMA037-050, 122-129, 200-225
KVM / virtMMU UAF、shadow VMCS、ASID、TSC deadline010-012, 475-484
安全ksmbd DACL、ceph ioctl caps、smb/client fallocate302-355
内存 / mmDAMON range 校验、ZONE_DEVICE、mm_init478-479
工具链workqueue 拆分、taskstats 改写、seqlock KASAN085-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 报告的安全修复。