0/2 已展开

LLM 分析

Linux 7.2.1 stable 发布通告

系列概况

  • 标题:Linux 7.2.1
  • 作者:Greg Kroah-Hartman
  • 版本:7.2.0 → 7.2.1(SUBLEVEL 由 0 升到 1)
  • 规模:stable 滚动合并,diffstat 列出了数十个驱动与子系统的修改;正文被截断,无法统计精确行数
  • 修改文件(diffstat 可见部分):Makefile、drivers/block/null_blk/zoned.c、drivers/bluetooth/hci_aml.c、drivers/dma/fsl-edma-main.c、drivers/hid/Kconfig 及多个 hid 子驱动、drivers/iommu/arm/arm-smmu-v3/、drivers/iommufd/ioas.c、drivers/mailbox/mailbox-mchp-ipc-sbi.c、drivers/net/ethernet/pensando/ionic/、drivers/net/usb/rndis_host.c、drivers/nfc/* 多文件、drivers/nvme/target/admin-cmd.c 等
  • 代码统计:未给出 +- 汇总,但 diffstat 合计行数在数百行量级
  • Message-ID:2026082741-suffice-poker-cbc1@gregkh(通告)、2026082741-luminous-overcrowd-1d3e@gregkh(补丁正文 reply)
  • 完整性:本线程只拿到 2 封邮件,且第二封的 diff 在 drivers/nvme/target/admin-cmd 处被截断;完整变更应以 git.kernel.org 上的 linux-7.2.y tag 为准

补丁目的

这是 stable 分支维护者 Greg KH 按周例行发布的 7.2.1 稳定版补丁,目标是回拢自 7.2 发布以来在各子系统里累积的回归修复与驱动缺陷。所有 7.2 用户被强制要求升级。

需要注意:本帖虽然来自 sched 频道,但内容本身并不涉及 scheduler 子系统,只是 stable tree 在 lore 上的归档归到了 sched 这一类;正文里也没有 CFS、RT、Deadline 或 energy-aware scheduling 的改动。

旧流程的问题

7.2.0 发布后,下游与 stable 维护者陆续发现若干驱动回归或参数校验缺失,例如:

  • null_blk 的 zoned 设备允许 zone_size_sects == 0,后续会触发除零或无效 IO
  • hci_aml 蓝牙固件下载路径里,firmware->data 在 size 小于 struct aml_fw_len 时仍被强转解引用
  • ionic 驱动有清理/正确性问题
  • rndis_hosthid-magicmousehid-nintendo 等 HID/网络/NFC 驱动积累了一批小修复

新流程

7.2.1 在 Makefile 中将 SUBLEVEL 从 0 调到 1,并把上述各驱动的小修复合并进 stable 分支。维护流程沿用 Greg KH 标准的"先开公告邮件 → reply 一封带 diff 的纯文本补丁"两步走。

Patch 概览

Makefile

-SUBLEVEL = 0
+SUBLEVEL = 1

drivers/block/null_blk/zoned.c

+ if (WARN_ON_ONCE(!dev->zone_size_sects))
+     return 0;
...
- if (!is_power_of_2(dev->zone_size)) {
-     pr_err("zone_size must be power-of-two\n");
+ if (!dev->zone_size || !is_power_of_2(dev->zone_size)) {
+     pr_err("zone_size must be non-zero power-of-two\n");
...
+ if (!dev->zone_size_sects) {
+     pr_err("zone_size too large or too small, leads to zero sectors\n");
+     return -EINVAL;
+ }

补齐对 zone_size_sects == 0zone_size == 0 的早期校验,避免后续按 sectors 计算时出现 0 长请求。

drivers/bluetooth/hci_aml.c

- struct aml_fw_len *fw_len = NULL;
+ const struct aml_fw_len *fw_len = NULL;
...
- fw_len = (struct aml_fw_len *)firmware->data;
+ if (firmware->size < sizeof(*fw_len)) {
+     bt_dev_err(hdev, "Firmware is too ...

强制 const、并在解引用前检查 firmware->size,防止 size 小于结构体大小时的越界读。

其他驱动

diffstat 里出现的 HID、NFC、IOMMU、ionic、rndis_host 等驱动都有小幅改动,但本帖 reply 的 diff 在 drivers/nvme/target/admin-cmd 处被截断,无法完整覆盖。

关键实现

整条 7.2.1 没有新的功能子系统,核心模式是「参数/输入校验 + 局部正确性修复」:

  1. size 校验前置null_blk 在 sector 转换前先 WARN_ON,hci_aml 在解引用 firmware 前比较 size 与结构体大小。
  2. 零值/非零检查zone_sizezone_size_sects 都补了 0 值检查,错误日志更明确。
  3. const 收紧aml_fw_len * 改成 const struct aml_fw_len *,防止意外修改只读固件内存。
  4. stable 惯例:所有改动尽量小、就地、不引入新接口,符合 stable tree 的"最小修复"原则。

类比

可以把 stable 发布想象成公寓楼的物业周巡:业主(Greg KH)每周拿着巡检报告(diffstat)来一次,把这周发现的水管滴水(null_blk)、门锁卡顿(hci_aml)、空调噪音(ionic)等零散小问题逐一修一遍,不动户型(不引入新功能),只是把已经入住的房间修得更好住。住户(下游用户)被通知:"这周必须更新一次,否则某些房间可能继续漏"。至于 sched 这个标签,更像是物业把巡检记录统一挂在公告板左上角,并不代表今天巡的是电梯。

Highlight:风险与注意点

  • 线程被错放在 sched 频道:本帖实质是 stable 整体发布通告,里面没有任何 scheduler 子系统的 patch;如果按 sched 频道订阅会被噪音打扰。
  • 回复邮件的 diff 被截断drivers/nvme/target/admin-cmd.c 之后的内容缺失,分析时必须以 git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git 上的 linux-7.2.y 分支为准。
  • 升级建议:所有运行 7.2 的发行版应当尽快拉取 linux-7.2.y,因为本次合并了蓝牙固件越界读、HID 回归等与用户态/外设相关的修复。
  • 风险点:稳定版虽以"只修不增"为原则,但跨子系统合并仍可能引入新的相互作用;建议在 CI 里跑自己的回归用例。

版本变化

本帖只覆盖 7.2.0 → 7.2.1 一个 bump,列表中暂未给出 v2 → v1 的回退或新增 patch;从结构上看,回复邮件直接贴出完整 diff,说明发布即定稿。

与其他相关 patch 系列的关联

与本帖相关的常规做法:

  • 与同周 stable 公告(其他 6.x.y、5.x.y 通告)共享回退合入流程。
  • 单个修复(例如 hci_aml 的 size 检查)通常先以独立 patch 出现在 linux-bluetooth 或 bluetooth-next,再被 stable 机器人 cherry-pick 进 stable 分支。

一句话总结

Linux 7.2.1 是 Greg KH 的常规 stable 例行维护发布,集中在 HID/蓝牙/NFC/IOMMU/网络等驱动的输入校验和正确性修复,强制建议所有 7.2 用户升级。

+-----------+      +-----------------+      +-----------------+
| 7.2.0 tag | ---> | stable week roll| ---> | 7.2.1 release   |
+-----------+      |  (cherry-pick)  |      | SUBLEVEL = 1     |
                   +-----------------+      +-----------------+
                          |
                          v
                   +-----------------+
                   | per-driver fix  |
                   | null_blk zoned  |
                   | hci_aml size chk|
                   | hid-* minor     |
                   | ionic / rndis   |
                   +-----------------+
                          |
                          v
                   +-----------------+
                   | announcement -> |
                   | reply + diff    |
                   | (this thread)   |
                   +-----------------+