sched discussion
Linux 7.2.1
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,后续会触发除零或无效 IOhci_aml蓝牙固件下载路径里,firmware->data在 size 小于struct aml_fw_len时仍被强转解引用ionic驱动有清理/正确性问题rndis_host、hid-magicmouse、hid-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 == 0 与 zone_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 没有新的功能子系统,核心模式是「参数/输入校验 + 局部正确性修复」:
- size 校验前置:
null_blk在 sector 转换前先 WARN_ON,hci_aml在解引用 firmware 前比较size与结构体大小。 - 零值/非零检查:
zone_size与zone_size_sects都补了 0 值检查,错误日志更明确。 const收紧:aml_fw_len *改成const struct aml_fw_len *,防止意外修改只读固件内存。- 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) |
+-----------------+