0/357 已展开

LLM 分析

Linux 6.12.103-rc1 stable review 系列

系列概况

  • 标题:[PATCH 6.12 000/337] 6.12.103-rc1 review
  • 作者:Greg Kroah-Hartman(Sasha Levin 实际整理 backport)
  • 版本:6.12.103-rc1
  • 规模:337 个 patch,发布周期为 6.12 stable 分支
  • 修改文件:覆盖 30+ 子系统,包括 netfilter、sched、scsi、drm、alsa、bluetooth、hwmon、ata、pinctrl、mm、net、media、bpf、kvm、cgroup、x86、powerpc 等
  • 代码统计:单个 patch 多为 1–30 行的最小修复型变更;个别系列(如 drm/xe/rtp)由 8+ 个 patch 组成
  • Message-ID20260807143418.516897842@linuxfoundation.org(封面邮件),本线程涵盖 337 封 patch + 20 封 review/回复
  • 完整性:主分支 337 个 patch 全部带 diffstat 与 upstream commit hash,回复链包括 Nathan Chancellor、Sasha Levin、Steven Rostedt、Mark Brown、Miguel Ojeda、Harry Yoo、Shiji Yang、Greg KH、Harshit Mogalapalli 等的测试/审查反馈

补丁目的

本系列是 6.12 stable 分支的 -rc1 例行发布:把 mainline 上游已合并的 337 个修复/小特性按 stable 规则回移到 6.12.y。目的是为发行版和长期维护用户提供 6.12 系列的最新 bugfix(包括 sched、netfilter、KVM、ALSA、drm、Bluetooth、hwmon、mm/slab 等多个高曝光子系统),同时给出一个 ~3 天的 review window 让 maintainer 在合入前反馈问题。

旧流程的问题

旧流程是手动逐个 cherry-pick,效率低且易漏 stable-dep 依赖。本批次借助于 Sasha Levin 的 stable 机器人自动回移 + maintainer 标注 "Stable-dep-of" tag,关联 patch(如 patch 026/028 依赖 patch 027)形成依赖图,避免 backport 顺序错位。

新流程

  • Sasha 机器人扫描 mainline,按 "Cc: stable@vger.kernel.org" 与回移准则生成候选 patch。
  • 通过 quilt 系列发布,统一 0/337 cover letter,列出 337 个 patch。
  • 收件人 3 天内 reply-to-all 提 objection,否则由 Sasha 推入 linux-6.12.y。
  • 任何 RC 期间的新 backport 走单 patch follow-up。

Patch 概览

  • netfilter(11/45/38 等):br_netfilter 重新分配 headroom、SIP NAT delta 拓宽为 s32、xt_hashlimit 校验 rate-match 能力、nf_tables object rhltable 改 per-table、netdev icmp/redirect 缺 peer 处理。
  • sched(124/205):deadline 仅在 dl_server 运行中采用新的 wakeup rule;schedutil util hook 必须在 sg_cpu 全部初始化后再 publish。
  • 网络驱动(12/19/20/26/57 等):airoha Tx-fwd 计数 index 修正、qcom pinctrl wakeup、mtk_eth_soc named IRQs、qede udp_tunnel 同步、VLAN/FDIR ATR、mt7530 MDIO 错误检查。
  • 存储(22/26/28/47/56 等):sun6i-dma 终止回收、libahci_platform 端口 mask、libsas HA 死锁、libiscsi sense buffer 漏。
  • HWMon(29/53/60/67/82):max98095/90 mclk、adt7470 一系列修复、ina2xx 溢出、ltc4282、lm90 alarm、nzxt-smart2 DMA 对齐。
  • MMC/PCI/USB/TypeC:UCSI 注销顺序、tcm set_alt 同步、UCSI 错误路径。
  • KVM:SVM AVIC inhibit、s390 PCI 校验、AIBV/AISB 校验。
  • ALSA:usb-audio 多个 UAF/OOB、seq/timer/ump 状态修复。
  • Bluetooth:ISO/L2CAP/HCI sync 多处 UAF 与命令取消修复。
  • Drm/xe/i915/amdgpu/vmwgfx:HDCP 序列、MST、page fault、BO 引用、dma-buf 导入、OA whitelist 重构。
  • mm/slab(289/290):递归 free 路径加入新 kmalloc type 限制;hugetlb fork uffd-wp 修复。
  • key/keys (42/43/44):keyring 描述越界 + chunk 字节序不一致 + assoc_array trim 错误。

关键实现

以 124/205 两个 sched 相关 patch 为例:

  • sched/deadline: Use revised wakeup rule only for running dl_server:在 dl_server 实际被调度运行时才启用新的 wakeup 规则,避免 dl_server 空闲时按新规则误唤醒普通 dl 任务。
  • cpufreq: schedutil: Publish util hooks only after all sg_cpu are initialized:把 sg_policy 的 util hook 暴露延后到所有 sg_cpu 完成初始化之后,否则 SMP bring-up 期间访问未初始化 schedutil 数据会引发空指针。

以 netfilter 11/45 patch 为例:

  • neigh_hh_bridge() 增加 skb_cow_head(),headroom 不足时重新分配 skb,避免向只读页写入触发 KASAN 报告与 Oops。
  • sip_help_tcp() 把 NAT rewrite 后的 s16 diff/tdiff 拓宽为 s32,因为单条 SIP 消息 NAT 改写可能超过 32KB,s16 溢出导致后续 ct_sip_get_header() 越界。
+----------------+      +--------------------+      +------------------+
| maintainer /   | ---> | Sasha backport bot | ---> | quilt 0/337 cover|
| upstream comm. |      | scan Cc: stable    |      |  + 1..337 patch  |
+----------------+      +--------------------+      +------------------+
                                                            |
                                                            v
                                            +-----------------------------+
                                            | lkml / lore review (3 days) |
                                            +-----------------------------+
                                                            |
                                                accept <-- Greg KH / Sasha
                                                            |
                                                            v
                                                 linux-6.12.y branch
                                                            |
                                                            v
                                            +-----------------------------+
                                            | release 6.12.103 (final tag)|
                                            +-----------------------------+

类比

stable review 像医院每周一次的"出院小结":上游每天送来一堆已确诊的"病历"(fix patch),stable bot 像护士站把过去一周可以带回家继续吃(backport)的"老慢病"药方整理成一张总表(0/337),主诊医生 Greg 签字前给 3 天复查窗口,各科会诊医师(maintainer)举手说"我那科没问题"或"这个药别给张三"。sched 那两条 patch 类似给 ICU 重症监护(dl_server)和心电监护(schedutil hook)补校准参数,避免换上新的心电算法后误报警。

Highlight:风险与注意点

  • mm/slab 289 在 6.12 backport 引入新 kmalloc type 时递归 free 风险:Nathan Chancellor 触发测试失败、Sasha 8 月 8 日与 Harry Yoo 持续 follow-up 至 8 月 16 日仍未合并,需关注后续 -rc2/rc3 是否有 drop 或重写。
  • net: ethernet: mtk_eth_soc: support named IRQs(patch 090):Shiji Yang 在 8 月 21 日报告该 patch 在 MIPS 平台命名 IRQs 不兼容,Greg KH 当日回复要求单独处理;需跟进是否在 -rc2 中被 revert 或分平台 gate。
  • Bluetooth hci_sync / pinctrl-microchip-sgpio 补丁:Harshit Mogalapalli 在 8 月 8 日提出多个 patch 的 objtool / config 警告,单独 follow-up 需关注。
  • stable 6.12 已进入维护末段:单次 backport 数量大(约 337),critical 修复(KVM/MM/SCHED)必须按 stable-dep 顺序 cherry-pick,否则会引入 ABI 不一致。
  • schedutil hook publish 时机:205 patch 修的是 SMP 启动期间的 use-before-init;如果某些 arch 启动顺序特殊,仍可能在冷启动后第一次频率切换时踩到;需重点跑 cpufreq/schedutil kunit。

版本变化

本批次是 6.12.103-rc1,唯一版本号。相对于 6.12.102(Greg 8 月初发布)增量集中于 netfilter/SIP/conntrack、mm/slab 递归 free 防御、drm/xe OA whitelist 重构、sched deadline 唤醒规则收敛。

一句话总结

本批次把上游 337 个稳定可移植修复回移到 6.12.y,回顾窗口内对 mm/slab、mtk_eth_soc、Bluetooth hci_sync 三个 patch 反馈需要 -rc2 关注,整体目的仍是给 6.12 长期支持用户一个干净、安全的稳定版基线。