0/2 已展开

LLM 分析

Linux 7.1.4 stable 发布说明:AF_ALG zero-copy 文档清理

注意:尽管 thread_key 来自 sched 频道,本线程实际内容是 stable kernel 发布公告 + 一处 AF_ALG/crypto 文档回填,并非 scheduler 代码改动;分析时应警惕 LKML 频道标签与内容不匹配的情况。

系列概况

  • 标题:Linux 7.1.4
  • 作者:Greg Kroah-Hartman
  • 版本:stable point release 7.1.4
  • 规模:跨多个 arch 子树(arm64 / loongarch / riscv / s390 / powerpc / x86),含 Documentation、MAINTAINERS、Makefile;diffstat 列表在 lore 抓取时被截断于 arch/x86/include/asm/no...
  • 修改文件:见首封邮件正文罗列的 30+ 路径
  • 代码统计:diffstat(原文截断,无法给出精确行数)
  • Message-ID:2026071816-cussed-fantasy-7a62@gregkh
  • 完整性:第二封邮件正文只展开了 Documentation/crypto/userspace-if.rst 一个 hunk,且 hunk 末尾亦被截断

补丁目的

  • 公告 7.1 stable 系列第 4 个 point release,强制所有 7.1 用户升级。
  • 回填 mainline 的修复到 7.1.y 分支,覆盖 KVM、BPF JIT、RISC-V pgtable/entry、S390 Kconfig 与字访问宏、x86 uncore、ACPI、defconfig 等。
  • 回填一条与安全相关的文档:把 AF_ALG splice/vmsplice 零拷贝章节删除并改写。

旧流程的问题

  • AF_ALG 历史上有 splice / vmsplice / sendfile 零拷贝接口,文档详细描述其需要 page 对齐、单次最多 16 页、配合 vmsplice(..., SPLICE_F_GIFT) + splice + read 的样板代码。
  • 该零拷贝路径多年来反复被用于提权 / 信息泄露利用,是高频漏洞来源;继续在公开文档里教用户怎么用它,等于把潜在攻击面摆在手册里。
  • 7.1 stable 同时累积了一批稳定性、正确性、defconfig 漂移问题,需要打包发布。

新流程

  • 删除 Documentation/crypto/userspace-if.rst 中介绍 AF_ALG 零拷贝的大段示例与限制说明。
  • 用一句话替代:AF_ALG 曾支持零拷贝,但因频繁出现漏洞而被移除;为兼容既有调用方,splice()sendfile() 系统调用接口仍存在。
  • 把上游 KVM、BPF JIT、RISC-V、S390 等子系统的回填一并打进 7.1.y 分支并打 tag。

Patch 概览

  • Documentation/crypto/userspace-if.rst:删 zero-copy 段落,改写为一行历史说明(见下)。
  • 其它路径未在本帖展开 diff;首封邮件仅以 diffstat 罗列。

关键实现

/* Documentation/crypto/userspace-if.rst —— 第二封邮件展示的 hunk */

/* 旧:长段示例 + 限制说明 */
- In addition to the send/write/read/recv system call family, the AF_ALG
- interface can be accessed with the zero-copy interface of
- splice/vmsplice. As the name indicates, the kernel tries to avoid a copy
- operation into kernel space.
-
- The zero-copy operation requires data to be aligned at the page
- boundary. ... (page-alignment, 16-page limit, vmsplice + splice + read 示例)

/* 新:一句话历史说明(原文末尾被截断) */
+ 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
/* 推测补全:... calls still exist, but no longer perform zero-copy. */

类比

  • 像小区曾设过一条"消防通道捷径",走的人多了就频繁出事故——翻墙、坠物、违建占用。物业最后封掉捷径,并把使用手册里"如何走捷径"这页撕掉,换成一行"此路已封闭,原入口保留以兼容既有门禁卡"。7.1.4 这次就是 stable 分支的物业手册更新。
  • stable point release 像汽车厂的季度召回公告:单条改动不大,但把所有已知问题汇总后一次性推给车主,要求"全部回厂"。

Highlight:风险与注意点

  • 本帖不是 scheduler patch,分类上不应被当作调度器改动;阅读 LKML 时频道标签与正文经常错位,需要以正文为准。
  • diffstat 在 lore 抓取时被截断,无法精确给出本次 7.1.4 的总文件数 / 行数;做影响评估时应直接 git log v7.1.3..v7.1.4
  • 依赖 AF_ALG 零拷贝的用户态库(如 libkcapi 的旧示例)需相应更新,避免继续走已被主线废弃的路径。
  • 7.1 stable 仍在维护窗口,但已逐步进入 LTS 候选期,下游发行版应优先拉取这次升级。

一句话总结

Greg KH 公告 Linux 7.1.4 stable point release,强制所有 7.1 用户升级;其中一条显眼改动是清理 AF_ALG zero-copy 文档,把已因安全问题被主线移除的 splice / vmsplice 教程从手册里删掉,只保留一句历史说明。

                +---------------------------+
                |   mainline (Linus' tree)  |
                +-----------+---------------+
                            |
                  cherry-pick fix backports
                            |
                            v
                +---------------------------+
                |   linux-7.1.y (stable)    |
                +-----------+---------------+
                            |
                       v7.1.4 tag
                            |
                            v
        +---------------------------------------+
        | Announcement (gregkh): "Linux 7.1.4"  |
        +---------------------------------------+
        |  - KVM arm64 / loongarch              |
        |  - BPF JIT arm64/loongarch/riscv/ppc  |
        |  - RISC-V pgtable/entry, defconfig    |
        |  - S390 Kconfig, word-at-a-time       |
        |  - AF_ALG zero-copy doc REMOVED       |
        +---------------------------------------+
                            |
                            v
        +---------------------------------------+
        | Users: must upgrade to 7.1.4          |
        +---------------------------------------+