sched discussion
Linux 5.15.217
LLM 分析
Linux 5.15.217 稳定版发布通告
系列概况
- 标题:Linux 5.15.217
- 作者:Greg Kroah-Hartman(stable 维护者)
- 版本:5.15.217(5.15 长期分支的稳定更新)
- 规模:跨多子系统的批量 backport
- 修改文件:Makefile、arch/arm64/boot/dts/nvidia/tegra194.dtsi、arch/openrisc/{include/asm/processor.h,kernel/signal.c}、arch/powerpc/platforms/pseries/{lparcfg,pci}.c、arch/x86/kernel/cpu/resctrl/rdtgroup.c、crypto/ccm.c、drivers/char/tpm/tpm_tis_core.c、drivers/crypto/qce/core.c、drivers/dma-buf/{dma-resv,udmabuf}.c、drivers/dma/dw-edma/*(7 文件共 274 行)、drivers/fpga/dfl-afu-main.c、drivers/gpio/{mvebu,pxa,rockchip,tegra,vf610}.c、drivers/gpu/drm/amd/amdgpu/{amdkfd_gpuvm,gem,ttm,uvd}.c 等
- 代码统计:单文件 2–90 行不等,最大头是 dw-edma-core.c (90)、dw-edma-pcie.c (83)
- Message-ID:
2026082305-overhead-jubilance-ef6e@gregkh(公告),2026082305-train-cornstalk-6951@gregkh(reply 含 diff) - 完整性:第一封 body 在 amdgpu 文件列表后被截断,但代表性改动类别已可见,可据此做整体判断
补丁目的
本帖不是 scheduler 讨论,而是 stable 团队例行的 5.15.y 版本回植公告。目的是把上游 mainline 已修复的若干 CVE/回归/驱动 bug 回植到 5.15 长期分支,强制所有 5.15 用户升级。涉及 TPM、DMA、DMA-BUF、DRM/AMDGPU、gpio、powerpc、arm64 dts、openrisc signal 等多个子系统,不是单一功能 patch。
旧流程的问题
- openrisc:旧
restore_sigcontext只清SPR_SR_SM一位,其它特权 SR 位(监督模式切换相关)可能被用户态通过 sigreturn 篡改,构成提权面。 - tegra194:5.15 分支旧 DTS 中 timer 节点用
GIC_CPU_MASK_SIMPLE(2)描述 PPI 中断亲和,但 SoC 实际是 4 核,亲和性失配导致 PPI 不能正确分发到所有 CPU。 - 其它子系统:原 body 被截断,但都是 upstream 已经修过的回归/驱动缺陷。
新流程
- openrisc:新增
SPR_SR_USER_MASK = SPR_SR_F | SPR_SR_CY | SPR_SR_OV,restore 时按白名单只让用户态恢复这几个标志,其余强制保留内核旧值。 - tegra194:DTS timer 节点改为
(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW),与 4 核对齐。 - 其它子系统:dw-edma(274 行,是这次最大的回植块),以及 TPM、DMA-BUF 锁、AMDGPU TTM 路径等回归修复。
Patch 概览
本帖不是 N 段 RFC 系列的"第 i/N 段",而是稳定版整批 backport。按文件归类大致:
- 核心修复:
arch/openrisc/*(7 行)、arch/arm64/boot/dts/nvidia/tegra194.dtsi(2 行) - 驱动回滚:
drivers/dma/dw-edma/*(合计 274 行,最大头)、drivers/char/tpm/tpm_tis_core.c(38 行)、drivers/gpio/*(~34 行)、drivers/gpu/drm/amd/amdgpu/*(53 行) - DMA-BUF:
drivers/dma-buf/dma-resv.c(10 行)、udmabuf.c(21 行) - 杂项:
crypto/ccm.c、drivers/fpga/dfl-afu-main.c、drivers/crypto/qce/core.c、arch/x86/kernel/cpu/resctrl/rdtgroup.c、arch/powerpc/platforms/pseries/{lparcfg,pci}.c
关键实现
虽然整帖是批量回植,但有两段改动特别值得拆开看:
openrisc sigreturn 特权位隔离:把"用户允许的 SR 位"做成白名单。注释也同步收紧——从"确保 SM 位被清掉"改为"保留特权位为内核所有,只恢复用户态标志"。本质是把一次控制流的"信任边界"重新划线。
/* arch/openrisc/include/asm/processor.h */
/* SR bits user space may change via sigreturn, the rest stay kernel owned */
#define SPR_SR_USER_MASK (SPR_SR_F | SPR_SR_CY | SPR_SR_OV)
/* arch/openrisc/kernel/signal.c restore_sigcontext() */
unsigned long old_sr = regs->sr;
regs->sr = (old_sr & ~SPR_SR_USER_MASK)
| (regs->sr & SPR_SR_USER_MASK);
arm64 tegra194 timer GIC mask:单纯把 CPU 数量与硬件实际对齐。看似一行 diff,实际关系到 SMP 启动后 tick device 能否正确收到 PPI14/10。
dw-edma 90+83 行改动:从 diffstat 看是结构体/枚举重构,可能是把 v0 与 v1 两代 eDMA 控制器的公共代码下沉或调整 probe 顺序,需要回 stable 仓库 diff 才能展开,这里只标"高风险点"。
类比
把 5.15.217 想成"长期支援版"的例行体检报告:Greg 是长期照护的家庭医生,每两周给老人(5.15 分支)做一次回访;这次带回的不是新疗法,而是把上游 ICU 抢救过的若干小毛病(TPM、DMA-BUF、openrisc、tegra194 DTS)一次性迁回老人的病历;对用户来说就是"升一下小版本号,把该打的疫苗打完"。
openrisc 那段又像酒店房卡系统:原来只取消"管理员权限"那一位,现在用白名单重新写卡,规定"只允许改这几位房态,其余一律还原为入住前状态",这样客人(用户态)就无法通过退房(sigreturn)伪造特权。
Highlight:风险与注意点
- 本帖不是 scheduler 专题,却被分到
sched频道:抓取时若仅按 channel 名分类会误判为调度器补丁。 - Greg 在 5.15.217 公告里把措辞从往常的"should upgrade"换成了"All users ... must upgrade",暗示此版本包含被认定为 CVE 风险的修复,必须升级。
- 用户若只跑 5.15.216 而不升 217,将漏掉 openrisc sigreturn 特权位隔离修复(罕见架构但仍属安全类)。
drivers/dma/dw-edma/dw-edma-core.c90 行 +dw-edma-pcie.c83 行改动相对较大,应重点核对 PCIe 控制器枚举路径是否回归。- 公告 body 被截断意味着无法看到
crypto/ccm.c、powerpc/lparcfg.c、resctrl/rdtgroup.c等文件的具体 hunk;如要复盘须直连 stable 仓库的 tag commit。
版本变化
本帖只覆盖 5.15.216 → 5.15.217 单次跃迁;上一版本由 Greg 以相同方式发布(5.15.216)。属于"小步快跑、每两周一次"的稳定版节奏,没有 RFC 草案式的多版本演进。
一句话总结
5.15.217 是一次跨多子系统的稳定版安全/回归批量回植通告,对所有 5.15 用户都是必须升级的小版本号;最值得注意的修复是 openrisc sigreturn 中特权 SR 位隔离与 tegra194 DTS 的 4 核 GIC mask,外加 dw-edma 大块回滚需重点回归验证。
+-----------------------+ +-------------------------+
| upstream linux.git | | stable/linux-stable.git |
| (mainline + -rc) | | branch: linux-5.15.y |
+----------+------------+ +-----------+-------------+
| ^
| cherry-pick CVE / regression | 5.15.217 tag
| fixes from mainline | (SUBLEVEL 216->217)
v |
+----------+----------------------------------++--------+
| linux-stable maintainers (Greg KH + team) |
| - review upstream cherry-picks |
| - build test on arm64/x86/ppc/openrisc/tegra194 ... |
| - assemble release announcement |
+----------------------+-------------------------------+
|
v
+--------+---------+
| announce on LKML |
| (this thread) |
+------------------+
|
v
+--------+---------+
| downstream users |
| must upgrade to |
| 5.15.217 |
+------------------+