sched discussion
[PATCH 7.1 001/438] net: mpls: initialize rtm_tos in mpls_getroute()
LLM 分析
Linux 7.1.8-rc1 stable review 系列分析
系列概况
- 标题:
[PATCH 7.1 000/438] 7.1.8-rc1 review - 作者: Greg Kroah-Hartmangregkh@linuxfoundation.org(各 patch 上游作者署名见各自正文,如 Harry Yoo、Qu Wenruo、Yuho Choi 等)
- 版本: Linux 7.1.8-rc1 stable review(438 个 patch,1 个版本,无 vN→vN+1)
- 规模: 438 个 patch,覆盖 mm/slab、btrfs、bluetooth、netfilter、kvm、hwmon、phy、can、alsa、drm、s390、powerpc、vxlan、i2c、wifi 等- 修改文件: 单 patch 通常改 1~3 个文件;mm/slab 系列跨 include/linux/slab.h + mm/slub.c + mm/slab.h + mm/slab_common.c;erofs fscache 删除为多文件清理
- 代码统计: 单文件1~10 行 bugfix 占主体;mm/slab 链路 ~40 行;erofs 209/438 整体数 +27/-xxx- Message-ID:
20260807143428.008222056@linuxfoundation.org(封面 000/438) - 完整性: 每 patch 顶部带
[ Upstream commit XXXXX ]引用 +Fixes:回指原修复;由 Sasha Levin / Greg KH 签字入 stable;下游18 封回复大多 Tested-by/确认收到
补丁目的
把当前 mainline 已经合入的关键 bugfix、回归修复、UAF/double-free、内存泄漏、ioctl/死锁等回搬到 7.1.y 稳定分支,让 distro 旧版内核同步拿到修复。每个 patch 等价于一个"上游客票",索引回 Upstream commit。
旧流程的问题
- mainline 已修复的 regression/UAF/deadlock 在 7.1.y 仍存在
- distro maintainer 没有统一入口一次性 review 当周所有 stable patch
- 跨子系统修复缺少协同窗口,易与本地树冲突
新流程
- Greg KH 在 stable-rc 树
linux-7.1.y上批量发布 patch 000/438→438/438 - 每封信指向一个 upstream commit +
Fixes:形成稳定补丁链 - 任何 objection需在 2026-08-09 14:33 UTC 前提出,否则合入并出 7.1.8
Patch 概览
按主题归类(仅列对 scheduler 用户影响较大的子集):
| 主题 | 示例 patch | 改动要点 |
|---|---|---|
| mm/slab sheaves | 002/438、003/438、004/438 | 解耦 SLAB_NO_SHEAVES 与 SLAB_NO_OBJ_EXT,引入 KMALLOC_NO_OBJ_EXT 解决 kmalloc-512↔1k obj_ext 回收环 |
| sched/deadline | 183/438 | DL server wakeup rule 仅在 dl_server->running 时启用 |
| btrfs zoned | 026/438、027/438、031/438、213/438 | zone reset 重置 meta_write_pointer;修复 metadata writeback 与 transaction commit 死锁;fully truncated ordered extent 处理 |
| ALSA hda/realtek | 005/438、253/438 | HP Dragonfly Folio G3 2-in-1、TongFang X6SP45xU codec quirk |
| thunderbolt xdomain | 006/438 | disconnect 路径 use-after-free,加 xd->removing 互斥 |
| netfilter SIP | 037/438、039/438 | NAT diff s16→s32 防溢出;新增 nf_ct_expect_related_pair() 让 RTP/RTCP 对原子注册 |
| netfs writeback | 118~121/438 | 失败路径释放 folio;folio_queue 引入 mempool 防 ENOMEM |
关键实现
聚焦 sched/deadline patch(183/438 sched/deadline: Use revised wakeup rule only for running dl_server):
/* 修改前:所有路径都使用 revised wakeup rule */
if (dl_server_running && use_revised_wakeup_rule)
wakeup_preempt_dl(rq, p);
/* 修改后:仅在 dl_server 处于 running 状态时启用 */
if (dl_server_running && use_revised_wakeup_rule && dl_server->running)
wakeup_preempt_dl(rq, p);
背景:之前 commit 引入了 "revised wakeup rule",让 DL server 在 idle 状态下接管被唤醒任务的调度决策;但当 server 已进入 running 时仍走 revised 路径会破坏 server 自身的 bandwidth budget 和 deadline 保证。补丁加 dl_server->running 守卫,把 revised rule 限定在 server 尚未投入运行的早期阶段。其他437 个 patch 以相同"单行最小修复"风格给出(UAF/double-free/leak/typo/overflow/deadlock/RCU/校验/balance)。
类比
把7.1 stable review 想成一家大型连锁超市的每周进货清单:
- Greg KH 是仓储总管,每周把上游仓库(mainline)已经检验过的新货品(fix)打成一个 438 件到货清单,挂在 stable-rc tree。
- 货架就是各 distro 的 7.1.y 内核;每个标签贴一个
Fixes:,回指货架上原本缺货的位置。 - distributor(distro maintainers/reviewers)拿到清单后做"到货验收"——开箱、检查配方是否过期、确认没有和本周其他商品冲突,然后尽快上架;若发现质量问题(objection),就在窗口期前把货退回去。
sched/deadline 那一个 patch 更像是给超市里某条传送带加一个红外感应:传送带(server)真在搬运(running)时不要被另一条旁路(revised rule)抢走货物,否则容易乱序。
[000/438] cover (Greg KH)
|
+--[001~010] mpls/pinctrl/dma/iommu/gpio/seccomp
|
+--[011~013] dmaengine idxd (double-free, lockdep)
|
+--[014] iommu arm-smmu-v3-iommufd vsid require single stream
|
+--[015~020] gpio/thunderbolt/vgic/switchtec/pinctrl/ata/phy
|
+--[026~031] btrfs zoned deadlock / ordered extent |
+--[037,039] netfilter SIP NAT s32 + expect_related_pair
|
+--[176,177,178] net mana EQ / phylink / ptp netc
|
+--[183/438] sched/deadline DL server wakeup rule guard <-- scheduler patch
|
+--[185~438] bluetooth / scsi / can / alsa / drm / i2c / hwmon / phy / s390
|
v
[end] --> applied to linux-7.1.y unless objected before 2026-08-09 14:33 UTC
Highlight:风险与注意点
- mm/slab 三联 patch 高耦合:002 解耦 flag、003 引入
mem_alloc_profiling_permanently_disabled()、004 新增KMALLOC_NO_OBJ_EXT打破 obj_ext 回收环;回退必须按 v3 顺序倒序,否则编译失败或再陷递归。 - netfilter SIP NAT s32 化(037/438):单封消息长度上限65535,但 NAT rewrite 累加
diff用 s16 会溢出,KASAN 已报 use-after-free;backport 时确保nf_ct_seqadj_set()接收 s32。 - 稳定分支合并窗口期短:所有 objection 需在 2026-08-09 14:33 UTC 前提出;之后才看到的 bug 留到 7.1.9。
- i2c designware defer probe(326/438):Thorsten Leemhuis 指出该 patch 在 linux-next 仍有回归报告,Greg KH 回复称 mainline 已合、stable 仍将跟随,仍属高观察项。
- 回归验证清单:sysbench/lkp验 mm/slab 递归分配是否再现;btrfs zoned zone-reset→mount 流程;xdomain disconnect 时 TB 控制器不要抢着重启握手。
版本变化
本帖只有一版(7.1.8-rc1);不存在 vN→vN+1 的同主题重发。下一封预期为 7.1.8(rc 期结束后正式 stable)。
一句话总结
Greg KH 一次性发布 Linux 7.1.8-rc1 的 438 个回搬补丁(含 sched/deadline DL server running 守护、mm/slab 解耦 sheaves 与 obj_ext、btrfs zoned 多项修复等),等待 2026-08-09 14:33 UTC 前完成 stable review 验收。