0/2 已展开

LLM 分析

Linux 6.12.96 稳定版发布与 AF_ALG zero-copy 文档清理

系列概况

  • 标题: Linux 6.12.96(发布通告) / Re: Linux 6.12.96(代表性 hunk)
  • 作者: Greg Kroah-Hartman
  • 版本: 6.12.96 stable release(linux-stable.git 的 linux-6.12.y 分支点发布)
  • 规模: 一次大范围 stable 合并,diffstat 横跨数十子系统(arm64、loongarch、riscv、x86、block、crypto、driver core、bluetooth、cpufreq、acpi、binder、hw_random、clocksource、kvm、resctrl 等)
  • 修改文件: diffstat 列出几十个路径,含 Documentation/crypto/userspace-if.rst 等
  • 代码统计: 各文件级 +/- 行数(diffstat 在原邮件正文中被截断)
  • Message-ID:
    • 2026071859-factoid-neon-8f07@gregkh
    • 2026071859-legged-scheme-bbb2@gregkh
  • 完整性: 第一封只有 diffstat(被截断) + 简短通告;第二封给出 Documentation/crypto/userspace-if.rst 的完整 hunk

补丁目的

本 thread 不是 patch series,而是 stable 分支 6.12.96 的发布通告 + 代表性变更示例。

  • 通告:要求所有运行 6.12.x 内核的用户升级到 6.12.96。
  • 代表性变更:把 Documentation/crypto/userspace-if.rst 里描述 AF_ALG 零拷贝(vmsplice/splice)接口的整段示例和说明删除,只留一句"AF_ALG 曾支持 zero-copy,但因频繁成为漏洞来源已移除"。

旧流程的问题

stable 通告本身没有"旧/新流程"的设计对比。但代表性 hunk 透露出真实驱动:AF_ALG 的零拷贝路径历史上有过多个本地提权 / 信息泄露类 CVE,继续保留文档等于暗示"这还是一个可用接口",容易诱导用户空间依赖一个已经被维护者认为不安全的特性。

新流程

文档侧不再有 splice/vmsplice 零拷贝用法说明,仅保留:

AF_ALG used to have zero-copy support, but it was removed due to it being a
frequent source of vulnerabilities. For backwards compatibility the splice()
and sendfile() system

(即保留向后兼容系统调用名,但说明 zero-copy 路径已退役。)

Patch 概览

  • Documentation/crypto/userspace-if.rst:删除 33 行旧的 vmsplice/splice 示例,新增若干行历史说明(功能等价于"删文档 + 加警告")。

关键实现

代表性 hunk 来自 Documentation/crypto/userspace-if.rst

@@ -328,33 +328,10 @@ CRYPTO_USER_API_RNG_CAVP option:
- int pipes[2];
- pipe(pipes);
- /* input data in iov */
- vmsplice(pipes[1], iov, iovlen, SPLICE_F_GIFT);
- /* opfd is the file descriptor returned from accept() system call */
- splice(pipes[0], NULL, opfd, NULL, ret, 0);
- read(opfd, out, outlen);
+AF_ALG used to have zero-copy support, but it was removed due to it being a
+frequent source of vulnerabilities. For backwards compatibility the splice()
+and sendfile() system

即:把"如何用 zero-copy 跑 AF_ALG"的完整 C 例子(基于 pipe + vmsplice(SPLICE_F_GIFT) + splice + read)整段移除,只留一段说明,提醒用户该路径已经被上游砍掉。

类比

可以把 6.12.96 stable 发布理解成"小区物业每月发的检修清单"——业主(用户)只需要关心两件事:这次修了什么,以及自己要不要去升级。
Greg 是物业:把整张清单(diffstat)贴在楼下公示栏,再把其中一项重点改造(AF_ALG zero-copy 文档撤下)单独再贴一张 A4。
AF_ALG zero-copy 文档删除就像小区里曾经开放过的一条抄近道——以前为了方便业主(用户空间性能)允许走,但这条路晚上老出事(CVE),物业就把它封了。封路时不会只把路牌拔掉,还要在公告栏写明"此门已封,禁止通行",以免新人再绕进来。

+-----------+        +---------------------+        +--------------------+
| 6.12.x    |  ==>   | 6.12.96 stable      |  ==>   | user-space crypto  |
| (any)     | upgrade| (linux-stable.git)  | affects| callers            |
+-----------+        +---------------------+        +--------------------+
        \                  |
         \                 | doc: AF_ALG zero-copy removed
          v                v
   "must upgrade"     "use the non-zero-copy path,
                        splice/sendfile kept for compat only"

Highlight:风险与注意点

  • 这是 stable release 通告,不是 RFC、不是单点 bugfix patch series;本分析只基于代表性 hunk。
  • AF_ALG zero-copy 历史是 CVE 重灾区(多次本地提权 / 信息泄露),保留任何 zero-copy 用法都需重新评估。
  • diffstat 被原文截断,单独看这两封邮件无法判断每个子系统的具体修复范围;建议直接 git log v6.12.95..v6.12.96 完整核对。
  • 用户必须升级到 6.12.96;6.12.x 之前所有更早 stable 同理应升级。
  • 文档删除 ≠ 接口彻底下线,仍需确认上游是否还兼容保留 splice() / sendfile() 的非 zero-copy 形态。

版本变化

无版本演进:这是 6.12.y 分支的单一 release point,不存在 vN → vN+1 的多次迭代。

一句话总结

Greg KH 发布 6.12.96 stable 通告,并在代表性 hunk 中把 AF_ALG zero-copy 的文档与示例代码全部撤下,只保留一句"已因漏洞频繁被移除"的说明。