本周两条主线:7.4 合并窗口关闭,rc1 已经发布——大系列赶在关门前的最后一批落地; 以及 mm 甩出一份 47 帖的「急救包」,把 KSM、mremap、GUP、khugepaged 攒着的一批正确性问题一次性摊到桌面上。标题里那个问号很诚实: mm: various (urgent?) fixes。

封面 · 11月1日 · 每周全局雷达

📊 板块热度

/ column
板块热度条形图 · 本周累计(6 天,10-29 缺数据)

本周 6 天数据(10-29 机器停机,无数据):net 2236 · DRM 1909 · mm 1839 · fs 1026 · media 799 · PCI 643 · arch 426 · LSM 363 · Rust 283 · block 266 · rt 35 · virtio 6。 mm 排到第三,但单系列体量最大(47 帖急救包),日均只算 6 天会有偏差。

🏆 本周头条:mm 的 47 帖「急救包」

/ column

[PATCH v3 00/47] mm: various (urgent?) fixes——47 个补丁打在同一个系列里, 覆盖 KSM、mremap、GUP、khugepaged、huge_memory、filemap、memfd、mglru 八个子模块。 这不是新功能,是一次集中清账。

KSM 三连 ksm: fix use of a freed anon_vma at swap-in(swap-in 时用了已释放的 anon_vma)、ksm: reset the unstable trees of all nodes、ksm: check large swap-cache folios before mapping them。KSM 的 rmap 与 unstable tree 是经典易错区。原文
mremap 四连 fix moving PUD leaves / recheck PUDs under the page table lock / use pudp_huge_get_and_clear() when moving huge PUDs / mm: fix deadlock of mremap() against UFFDIO_MOVE。PUD 级别的移动与锁重检,都是被 syzbot 喂出来的那类问题。
GUP 四连 check for overflow when converting nr_pages to bytes、fix out-of-bounds write for nr_pages == 0、recheck the PUD under PTL in follow_pud_mask()、fix clearing folios in memfd_pin_folios()。GUP 是老牌高危区,这四条都是边界条件。
khugepaged 四连 check if PTE table is empty / preserve dirty bits when collapsing PTE-mapped THPs / fix PMD table lock leak / always recheck the pmd。「脏位丢失」那条最危险——折叠后数据可能不落盘。
其它 huge_memory 五条(含 deferred_split 列表损坏、device-private folio 活锁)、filemap 四条(folio lock 唤醒丢失)、userfaultfd 四条(唤醒语义)、以及 fork: take mmap_lock before copying mm_struct。
怎么看这个系列 标题带问号的 urgent? 本身就是信号:作者自己也在判断这些够不够「紧急」。对内核研究者来说,这 47 条是mm 子系统当下最脆弱点的清单——想找切入点,从这里挑一条读 commit message 就是最好的入口。

📰 本周其它重点

/ column
7.4-rc1 已发布,合并窗关闭 本周的 pull 请求全部挂着 for v7.4-rc1:drm fixes、fbdev、fsverity、vfs fixes 等。窗口关门前最后一批大系列都进来了,接下来两周是 rc 期的修 bug 节奏。LWN
connector reset 退役进 v3(37 补丁) 上周的 59 补贴片系列缩到 37 补丁,本周发 v3。i915/amdgpu/nouveau/tegra/vc4/vkms 等驱动逐个改走 atomic_create_state,并在 v3 里把 drm/tests 也一起迁了。KMS 里最后一个不可失败的初始化钩子,还剩最后一段路。原文
dyndbg 大整理 v13(39 补丁) 修 classmaps API、扩展 query 语法、补 selftests;其中 dyndbg: split multi-query strings with @ 与把 mod_name 从 ddebug_table 下移到 _ddebug_info 是结构性改动。调试点(dyndbg)自己的 API 在收敛。原文
fs 只读重挂 v2(34 补丁) ext4: allow remounting read-only in the emergency state + ocfs2: don't set SB_RDONLY after filesystem errors——统一「文件系统出错后如何进入只读」的语义,v2 已覆盖多个 fs。这类跨 fs 的一致性改造,往往是后续新 API 的前置。原文
virtio-media v10:虚拟机相机直通定型 Google 的 virtio-media 走到 v10,虚拟机里第一次有了像样的 V4L2 直通框架——设备侧 buffer 经 virtio 传给 guest,guest 侧按标准 V4L2 接口操作。
索尼 Starvis 2 六型合并(v7,18 补丁) imx678 被改写成通用 Sony Starvis 2 驱动,六款传感器共用一套代码,删掉大量重复。单驱动覆盖一族传感器的样板。
kTLS 在线换密钥(赶在 RFC 9846 前) 内核 TLS 支持运行中更新密钥,不用断开重建连接——RFC 9846 对密钥更新有明确要求,这是个 deadline 驱动的补丁。
dma-buf:Phase out is_signaled() race RFC 6 补丁,要把 is_signaled() 的竞态从 API 层面消掉——上周的 skb_zerocopy 安全修复同源,都是「共享资源的完成语义」问题。
KVM:CoCo 客机首次能用 balloon 机密计算(CoCo)客机的内存气球首次可用,配合本周 KVM 对 dying VM uaccess 的加锁修复。

📚 LWN 本周

/ column

Removing binder.c · Containers as a recognized kernel object · Guidelines for panics in kernel code · The first part of the 7.4 merge window · Seeking smaller kernel stacks · The end of __get_user() and __put_user()

🧭 合入状态

/ column
本周重点系列:全部未合入 mm 47 帖急救包(v3,10-31)、connector reset v3(10-30)、dyndbg v13(10-27)、fs sb_rdonly v2(10-29)——经本地三镜像反查,四条都还在评审。7.4 窗口已关,这批新系列最早也只能进 7.5。
为什么现在查都是「未合入」 合并窗刚关(rc1 阶段只收修复),新系列要等下一个窗口。这是正常节奏,不是漏报。真正的命运追踪要在下个月看:到 11 月底再查这四条,才能看出谁活下来了。

⚙️ 机制雷达

/ column
KMS 状态创建路径的最后一战 connector reset 从 59 补丁缩到 37 —— 不是缩水,是把已经合入的部分摘掉了。剩下的驱动改完,DRM 核心就再无「不可失败的初始化钩子」。
文件系统错误语义统一 fs 只读重挂系列要统一「出错后怎么只读」——此前每个 fs 各行其是。跨 fs 语义统一通常预示着一个新的公共 API。
调试基础设施自身也在收敛 dyndbg 39 补丁修 classmaps API、扩 query 语法、补 selftests。调试点这种「不起眼的基础设施」动 39 个补丁,说明它被用得太广、历史包袱已经碍事。

📰 与你方向的交叉点

/ column
mm 急救包里的 GUP/khugepaged 条目 如果你做 camera/DRM 的 dma-buf 或 pinned buffer 路径,memfd_pin_folios() 那条和 GUP-fast 溢出 两条值得读——它们直接影响长时 pin 的缓冲区。
virtio-media v10 虚拟机相机直通框架——如果将来要在 VM 里跑相机链路,这是唯一的上游路径。
Starvis 2 六型合并 单驱动覆盖一族传感器的样板,做 sensor 驱动的可直接对照。
connector reset v3 碰 panel/bridge/connector 驱动的,迁移窗口就在眼前。

📖 本期概念速查

/ section
fixed_core(急救包系列名) mm 这批补丁的系列前缀,作者用「urgent?」带问号自我怀疑——内核里常见这种诚实的命名。
khugepaged 后台把 4K 页折叠成 THP 的线程。折叠时若丢失 dirty 位,数据可能不写回磁盘。
PUD 级别 mremap 比 PMD 再上一级的页表移动,涉及页表锁与 huge PUD 的拆分/重检。
dyndbg classmaps 动态调试的「按类分组控制」机制,子系统可以给自己的一批调试点单独归类。
SB_RDONLY 语义 超级块只读标志。fs 出致命错误后如何进入只读、能否重挂,各 fs 此前行为不一。

如果对你有用,点个赞,或转给需要的朋友。

数据来源:mm / LWN(lore.kernel.org)· 北京时间