sched discussion
Linux 6.18.39
LLM 分析
Linux 6.18.39 stable 发布:跨子系统累积修复与 AF_ALG zero-copy 文档清理
系列概况
- 标题: Linux 6.18.39
- 作者: Greg Kroah-Hartman (Greg KH)
- 版本: 6.18.39 stable release(非 patch series,而是 stable 分支的例行维护发布;
patch.version/index/total均为 null,series_title为 "Linux 6.18.39") - 规模: 跨多子系统的累积发布;邮件正文只展示了部分 diffstat 摘要
- 修改文件: 邮件可见的部分包括
Documentation/crypto/userspace-if.rst、Documentation/process/deprecated.rst、MAINTAINERS、Makefile、arch/arm64/{kernel/entry-fpsimd.S,kvm/hyp/nvhe/hyp-main.c,kvm/nested.c,lib/insn.c,net/bpf_jit_comp.c}、arch/loongarch/{include/asm/acpi.h,kernel/acpi.c,kernel/setup.c,kvm/intc/{eiointc,ipi,pch_pic}.c,net/bpf_jit.c,pci/acpi.c}、arch/powerpc/net/bpf_jit_comp.c、arch/riscv/{include/asm/pgtable.h,kernel/entry.S,net/bpf_jit_comp64.c,net/bpf_jit_core.c}、arch/s390/{Kconfig,include/asm/asm-extable.h,include/asm/word-at-a-time.h,mm/extable.c}、arch/x86/{events/intel/uncore_snb.c,include/asm/nospec-branch.h,kernel/cpu/bugs.c,kernel/cpu/resctrl/monitor.c,kvm/{lapic.c,lapic.h,svm/avic.c}} - 代码统计: 邮件仅给出行数摘要,如
userspace-if.rst | 31、deprecated.rst | 7、MAINTAINERS | 1、Makefile | 5、entry-fpsimd.S | 8、hyp-main.c | 3、kvm/nested.c | 40、loongarch/kernel/acpi.c | 28、s390/word-at-a-time.h | 22、s390/mm/extable.c | 18、x86/cpu/bugs.c | 50 -、x86/kvm/lapic.c | 49、x86/kvm/svm/avic.c | 47;邮件在arc处被截断,完整统计未给出 - Message-ID: 2026071811-onto-impound-c1fd@gregkh(mail #1);跟帖 2026071811-unsecured-cornflake-bc9c@gregkh(mail #2)
- 完整性: 2 封邮件;首封为发布公告(diffstat 在
arc处被截断),次封为同主题回复,展示Documentation/crypto/userspace-if.rst的示例 hunk(hunk 在 "splice() and sendfile() system" 处被截断)
补丁目的
本帖既不是单一 bug 的修复讨论,也不是某个新特性的 RFC,而是 stable 分支维护者 Greg KH 发布的 6.18.39 例行稳定版本。目标有三点:
- 把若干上游 mainline 修复 cherry-pick 进
linux-6.18.ystable 分支 - 公告原文 "All users of the 6.18 kernel series must upgrade",要求所有 6.18 系列用户升级
- 公示本次发布涉及的子系统范围,方便下游使用者自检是否受相关修复影响
跟帖中具体展示的例子是 AF_ALG zero-copy 接口的文档清理:由于 splice/vmsplice zero-copy 路径历史上反复成为漏洞来源,文档中对应章节被改写以反映接口已退役。
旧流程的问题
mail #2 给出的 hunk 显示 Documentation/crypto/userspace-if.rst 旧版详细介绍了 AF_ALG 的 zero-copy 用法,包含:
- 强调用
vmsplice(..., SPLICE_F_GIFT)+splice()实现零拷贝,避免数据拷贝进内核 - 约束:数据需 page 对齐(不强制但更高效)、每次系统调用最多 16 页
- 给出一段 libkcapi 风格的完整示例:
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);
这条 zero-copy 路径在历史上多次成为漏洞源头(CVE 多发),从安全角度不再适合作为公开推荐用法;同时 kernel 实现侧早已移除该接口,文档若不更新会持续误导用户态程序继续依赖已退役的路径。
新流程
新文档删除了上述零拷贝示例段,替换为简短说明:
- "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 …"(邮件在 hunk 中被截断,未给出完整文本)
也就是说:kernel 实现层早已移除 zero-copy,文档现在只是顺手把误导性示例撤掉,并保留 splice() / sendfile() 的向后兼容性提示,避免继续诱导用户态程序去用已退役接口。
+---------------------------+
| upstream mainline (6.18+) |
+-------------+-------------+
|
cherry-pick stable-worthy fixes
|
v
+---------------------------+
| linux-6.18.y branch |
| tag: v6.18.39 |
+-------------+-------------+
|
Greg KH posts announce mail
|
v
+---------------------------+ +-----------------------------+
| mail #1: release note | | mail #2: example hunk reply |
| - "all users must upgrade"| | - userspace-if.rst hunk |
| - diffstat (truncated) | | drop zero-copy recipe |
+-------------+-------------+ | keep splice/sendfile note|
| +--------------+--------------+
v |
+---------------------------+ v
| users MUST upgrade to | Documentation/crypto/userspace-if.rst
| 6.18.39 | =========================
+---------------------------+ BEFORE: zero-copy recipe + libkcapi sample
AFTER : "removed due to frequent vulns"
Patch 概览
本次发布不是单 patch,而是 stable 分支的一次批量 cherry-pick。邮件正文在 diffstat 中列出的修改面大致可分为:
- 文档 / 元数据:
Documentation/crypto/userspace-if.rst、Documentation/process/deprecated.rst、MAINTAINERS、Makefile - arm64:
entry-fpsimd.S、kvm/nested.c、kvm/hyp/nvhe/hyp-main.c、lib/insn.c、bpf_jit_comp.c - loongarch: ACPI 与 KVM intc(
eiointc.c、ipi.c、pch_pic.c)、bpf_jit.c、pci/acpi.c、setup.c - powerpc:
bpf_jit_comp.c - riscv:
pgtable.h、entry.S、bpf_jit_comp64.c、bpf_jit_core.c - s390:
Kconfig、asm-extable.h、word-at-a-time.h、mm/extable.c - x86:
uncore_snb.c、nospec-branch.h、cpu/bugs.c、resctrl/monitor.c、kvm/lapic.{c,h}、kvm/svm/avic.c - crypto 文档:
Documentation/crypto/userspace-if.rst(mail #2 中展示了 hunk)
由于邮件不含每个文件的实际 hunk,逐 patch 实现细节需查阅 linux-6.18.y 分支 v6.18.39 tag 的完整 changelog。
关键实现
由于本帖正文仅展示文件名 + 行数摘要(mail #1)和单个文档 hunk(mail #2),邮件层面无法逐项展开功能性改动。可观察到的明确改动只有 mail #2 的文档 hunk:删除旧 AF_ALG zero-copy 示例段,新增简短说明。其它子系统的具体修复需要从 linux-6.18.y tag 的 log 拉取后再分析。
类比
可以把 6.18.39 想象成 某款在售车型的季度 OTA 召回公告 + 小修包:
- mainline = 厂家下一代新车的研发线
- stable (6.18.y) = 已经卖出去的车队
- 6.18.39 = 4S 店发布的例行检修 + 安全补丁包,明确要求所有车主回店升级
- AF_ALG zero-copy 文档清理 = 顺手把"车主手册"里关于某个曾经很炫但已被禁用的选装功能(零拷贝接口)那一页撕掉,换成"该功能已停用"的小字说明,避免继续误导老车主往那个方向折腾
Highlight:风险与注意点
- 本帖并非 scheduler 讨论:来源频道虽标记
sched,但邮件正文是跨子系统的 stable release,与 CPU scheduler(runqueue、sched_class、fair/rt/deadline)无直接关联 - 必须升级:公告原文 "All users of the 6.18 kernel series must upgrade",6.18 系列用户应尽快合入或安装 6.18.39
- AF_ALG 用户态兼容性:若用户态仍有代码用
vmsplice(SPLICE_F_GIFT)+splice()走 AF_ALG zero-copy 路径,需要确认内核侧已禁用并相应调整实现 - 追改动需看 git:邮件正文只列 diffstat,不含具体 hunk;要逐项审计请到
linux-6.18.y分支查看v6.18.39tag 的完整 changelog - 邮件正文被截断:mail #1 的 diffstat 在
arc处结束(应为arch/...),mail #2 的 hunk 在 "splice() and sendfile() system" 处结束,信息不完整
一句话总结
Greg KH 发布 Linux 6.18.39 stable 例行维护版本,跨多架构与多子系统修复了一批问题,并在 Documentation/crypto/userspace-if.rst 中正式撤销 AF_ALG 的 zero-copy 用法说明(因反复出现的安全漏洞),要求所有 6.18 系列用户升级。