0/2 已展开

LLM 分析

Linux 6.18.46 stable kernel release

系列概况

字段内容
标题Linux 6.18.46
作者Greg Kroah-Hartman
版本6.18.46(stable point release)
来源频道lore.kernel.org sched(stable 公告被多频道抄送)
规模数十个文件,多个子系统
修改文件(节选)Makefilearch/arm64/boot/dts/nvidia/tegra194.dtsiarch/m68k/Kconfig.cpuarch/openrisc/{include/asm/processor.h, kernel/signal.c}arch/powerpc/...arch/riscv/kernel/ftrace.carch/x86/kvm/x86.cblock/genhd.ccrypto/ccm.cdrivers/{accel/amdxdna, ata, base/regmap, crypto/{qce,starfive,tegra}, firewire, gpio, gpu/drm/amd/amdgpu}
代码统计由主帖 diffstat 给出(部分被截断)
Message-ID主帖 2026082308-gimmick-washed-83fa@gregkh;reply 2026082308-habitual-esquire-e4b7@gregkh
完整性主帖为完整 release announcement;reply 仅展示 diff 开头片段,完整 patch 集合需到 linux-6.18.y 分支查看

注:本帖来自 sched 频道,但并非 scheduler 子系统本体讨论,而是 stable 团队统一发布的 6.18.46 公告被多频道抄送。

补丁目的

把 6.18.y 分支从 SUBLEVEL=45 推进到 SUBLEVEL=46,集成一批经过 stable 团队 review 与回归测试的修复,覆盖 arm64 device tree、m68k Kconfig、openrisc signal context、powerpc、riscv ftrace、x86 KVM、block、crypto、amdgpu、ata、firewire、gpio 等子系统。运行 6.18.x 的发行版和嵌入式产品应当尽快升级。

Patch 概览

reply 邮件 body 中可观察到的具体改动(diff 片段):

  • MakefileSUBLEVEL = 45SUBLEVEL = 46
  • arch/arm64/boot/dts/nvidia/tegra194.dtsi:timer 节点新增 GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOWGIC_PPI 15 之类的中断属性
  • arch/m68k/Kconfig.cpu:新增 NR_CPUS 配置项,默认 "1"
  • arch/openrisc/include/asm/processor.h:新增 SPR_SR_USER_MASK,限定 sigreturn 期间 user 态可触及的 SR 位
  • arch/openrisc/kernel/signal.csave_fp_state 中新增 old_sr = regs->sr 保存现场;restore_sigcontext 中保证 SM 位被清除

主帖附带的 diffstat 还列出 arch/powerpc/platforms/pseries/{lparcfg.c, papr-phy-attest.c, pci.c}arch/riscv/kernel/ftrace.carch/x86/kvm/x86.cblock/genhd.ccrypto/ccm.cdrivers/accel/amdxdna/aie2_ctx.cdrivers/ata/libata-{eh,scsi}.clibata.hdrivers/crypto/{qce,starfive,tegra}/...drivers/firewire/ohci.cdrivers/gpio/gpio-{ml-ioh,sloppy-logic-analyzer}.cdrivers/gpu/drm/amd/amdgpu/{amdgpu_cs, amdgpu_device, amdgpu_gem, amdgpu_ttm, amdgpu_uvd, gfx_v12_0, jpeg_v4_0_5}.c 等大量变更(diffstat 行被截断)。

关键实现

Makefile 版本号 bump

-SUBLEVEL = 45
+SUBLEVEL = 46

构建系统、包管理器和 CI 缓存键都依赖 SUBLEVEL 判定这是新的 point release。

openrisc signal context 修复

+/* 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)
 static long save_fp_state(struct sigcontext __user *sc)
 {
+    unsigned long old_sr = regs->sr;

restore_sigcontext 中必须把 SM 位清掉,否则 user 态可能在 sigreturn 后意外进入 supervisor 模式。SPR_SR_USER_MASK 明确 user 可修改的 SR 位只有 F/CY/OV,剩下的位(F 之外的所有 supervisor 控制位)必须保留为 kernel owned。

m68k NR_CPUS 显式化

+config NR_CPUS
+    int
+    default "1"

很多 m68k 平台都是单核;显式声明默认值可避免后续 CONFIG_SMP=n/NR_CPUS 默认值变化时的回归。

跨子系统 fix 集

arch/powerpc/platforms/pseries/papr-phy-attest.carch/x86/kvm/x86.cdrivers/gpu/drm/amd/amdgpu/amdgpu_uvd.cdrivers/firewire/ohci.cdrivers/gpio/gpio-ml-ioh.c 等多个文件被改动(行数从 ±2 到 ±85 不等),表明这是一次范围较广的稳定化清理,不只局限于某个子系统。

类比

把 stable point release 比作一次小区物业的"周末集中消缺":各户上周报修的零散问题(水表慢转、电梯按钮接触不良、信报箱生锈)由物业统一汇总、一次性修完,并在大门口把公告牌从 "v45" 改成 "v46"。Makefile 的 bump 就是换牌子那一刻;每条具体 patch 都是某一户的具体报修。

SPR_SR_USER_MASK 的引入则像"交还钥匙核对清单":房东(kernel)把钥匙借给租户(user)时拍一张照片记录所有原始齿形,租户归还时核对清单上允许修改的只有 "F/CY/OV" 三处(对应门把手方向、节拍、声音),其它齿(对应整栋楼的安保开关)必须保持原样,否则租户可能趁交还时偷偷把总电闸也拧动一下(绕过 supervisor 检查)。

Highlight:风险与注意点

  1. 来源频道误判:本帖虽然挂在 sched 频道,但内容与 scheduler 子系统无关,是 stable 公告被多频道抄送。阅读时不要被频道标签带偏方向。
  2. 升级节奏:stable release 通常意味着线上有可被 exploit 的修复,运行 6.18.x 的发行版与设备厂商应当尽快 bump,而不是跳过该 point release 直接追主线。
  3. m68k NR_CPUS 显式化:新增 default "1" 会改变过去依赖隐式默认值的构建脚本行为;CI / 包脚本如果硬编码 make -j$(nproc) 之类的并行假设,需要核对。
  4. openrisc sigreturn SR:user 态能写的 SR 位被限定为 F | CY | OV,其余保留为 kernel owned,这是真实的安全/正确性 fix,需要 backport 到所有 openrisc 长期支持的版本。
  5. diff 不完整:reply 邮件 body 中只展示 diff 开头片段并被截断;阅读时要明确这只是 release 的一部分,完整 patch 集合需查 linux-6.18.y 分支。
  6. 覆盖范围广:本次同时改动了 amdgpu、firewire、gpio、ata、KVM 等多个高风险子系统,merge 顺序与冲突解决需要谨慎;stable 团队的回归测试通常较为充分,但下游厂商仍应自行 smoke test。

版本变化

文件 / 字段旧值新值说明
Makefile SUBLEVEL4546point release bump
openrisc SPR_SR_USER_MASK(未定义)F | CY | OVsigreturn 安全边界
m68k NR_CPUS 默认值隐式(依赖 CONFIG_SMP显式 "1"避免默认值回归
tegra194.dtsi timer 节点原 GIC 配置增加 GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOWtimer 中断路由修正

注:因 reply 邮件 body 被截断,无法逐文件列出 v45→v46 的全部 diff;以上是已观察到的少量对比。

一句话总结

6.18.46 是一次跨多子系统的 stable point release bump:MakefileSUBLEVEL 由 45 升至 46,集成 openrisc sigreturn SR mask、m68k NR_CPUS 显式化、arm64 tegra194 timer 修正及 amdgpu/firewire/gpio/ata/KVM 等若干 fix,6.18.x 用户应当尽快升级。

+----------------------------+
|       6.18.45 (previous)   |
+-------------+--------------+
              |
              v
+----------------------------+
|    stable patch review     |
|  (subsystem maintainers +  |
|   Greg KH backport queue)  |
+-------------+--------------+
              |
              v
+----------------------------+
|  Makefile SUBLEVEL 45 -> 46|
+-------------+--------------+
              |
   +----------+----------+----------+
   v                     v          v
+----------+      +-----------+ +-----------+
| openrisc |      |   m68k    | |  tegra194 |
|  sig SR  |      | NR_CPUS=1 | | timer IRQ |
+----------+      +-----------+ +-----------+
   |                     |          |
   +----------+----------+----------+
              |
              v
+----------------------------+
|       linux-6.18.y tree    |
+-------------+--------------+
              |
              v
+----------------------------+
|  users / distros / vendors |
|       (must upgrade)       |
+----------------------------+