合并窗第三天,主题从「框架重做」切到「边界条件收敛」——Google 的 Sean Christopherson 用 15 个补丁把 KVM 的 guest uaccess 与 dying VM 彻底隔开,堵掉一整类 use-after-free;同队的 Kevin Loughlin 用 13 个补丁让 CoCo 机密计算客机第一次能用 virtio_balloon 回收内存。 同一天,Morton 46 补丁与 Hugh Dickins 的 shmem v2 14 补丁继续扫尾,iomap 移除 14 年历史的 legacy path。
📊 板块活跃度
/ column
数据截至 10-28 06:23 北京,近 24h 各板块真实计数:mm 570 · net 533 · DRM 384 · fs 302 · media 199 · PCI 190 · arch 186 · LSM 96 · Rust 81 · block 39 · virtio 5 · rt 4。v7.4 合并窗进入第三天, mm 取代 net 登上榜首,Morton 46 补丁扫尾 + Hugh Dickins shmem v2 集中修缮是主要贡献;fs 因 overlayfs 容器化 syncfs 与 iomap legacy 移除系列显著抬升。
🎬 今日导读
/ section 头条 KVM 给 dying VM 的 uaccess 上锁——15 补丁堵住整类 use-after-free
头条 CoCo 客机首次能用 balloon 回收内存——virtio_balloon 接入 unaccepted memory
机制 overlayfs 容器化 syncfs、iomap 14 年 legacy path 退役、mseal 系统映射密封、slab 启动期加固选项
合并窗 Morton 46 补丁 + shmem v2 14 补丁,mm 板块冲上榜首
速查 uaccess、dying VM、unaccepted memory、CoCo、iomap_next、mseal
💡 今日头条
/ section KVM 给 dying VM 的 uaccess 上锁——15 补丁堵住整类 use-after-free
〔10-28 06:12 北京〕· [PATCH v3 00/15] KVM: Fix+harden against bad uaccess using dying VM · Sean Christopherson (Google)
现状 KVM 通过 uaccess(copy_to_user/copy_from_user)从 VMM 进程读写 guest 内存。这套路径假设「当前进程的 mm 就是 KVM 持有的那个 mm」——uaccess 直接走 current->mm 的页表解析虚拟地址,KVM 不在每次访问前重新校验这个假设。
痛点 VM 进入 dying 状态(用户态 close 了 KVM fd、开始销毁)后,current->mm 可能已经切走或被释放;此时再触发 guest 内存 uaccess,KVM 拿着的是一枚失效的 mm 指针——memslot 释放、mmu_notifier 注销、VMCS 影子页清理各有自己的时序窗口,叠在一起就是一整类 use-after-free。Sean 在 cover letter 里点名这是 syzbot 与内部 fuzzing 反复打到的痛点。
方案 15 个补丁分两层:先把「当前进程的 mm 必须是 kvm->mm」写成硬校验——uaccess 入口对比 current->mm 与 kvm->mm,不一致直接拒绝;再处理 dying VM 路径——memslot 在 mmu_notifier 注销后立即销毁、销毁期间禁止设置新 memslot、uaccess 预校验接口 kvm_check_uaccess()、nVMX 释放 vCPU 时不再切到 vmcs01、不再做完整 nested VM-Exit、不再 load+put vCPU、显式把 dying vCPU 从 PI wakeup list 上摘掉。
为什么 把 mm 校验做成硬拒绝而不是 WARN,是因为「错 mm」已经不是合法状态——继续走只是把崩溃推迟到更难追的位置;把 memslot 销毁提前到 mmu_notifier 注销后立即做,是为了把所有「靠 mmu_notifier 链上还有 memslot」的隐含假设一次性清掉;嵌套虚拟化的清理路径不再走 vmcs01 切换,是因为 dying 状态下切过去反而引入更多「看起来活着」的假象。
效益 一整类「KVM 在 VM 销毁路径上踩坏 mm」的 use-after-free 被从根上封掉;VMM 进程退出/崩溃时的核态行为从「尽量别出事」变成「明确拒绝」;syzbot 与内部 fuzzing 报告的可复现 crash 路径直接消失。
下一步 系列已是 v3,作者明确说目标是进 7.4 后期或 7.5 早期;下一阶段的同类工作是把 KVM 的其它 uaccess 路径(如嵌套虚拟化里的 guest access)也挂到这套校验下,这个框架先站稳再推广。
一句话点评 合并窗里少见的「安全硬化型」大系列——不是修一个 bug,而是把一整类时序假设从隐式变成显式,KVM 的 dying VM 路径从此有了明确的边界。
🔗 原文
CoCo 客机首次能用 balloon 回收内存——virtio_balloon 接入 unaccepted memory
〔10-27 10:56 北京〕· [PATCH 00/13] virtio_balloon, efi/unaccepted: support memory ballooning and free page reporting in CoCo guests · Kevin Loughlin (Google)
现状 CoCo(机密计算,TDX/SEV-SNP 等)客机启动时,宿主给的所有内存页默认处于「unaccepted」状态——客机必须显式 accept 才能使用。这个设计保证了「客机只认它验过的页」,但也意味着一旦被 accept 过的页想还给宿主,没有干净的反向通道。virtio_balloon 是宿客之间协商内存回收的标准机制,free page reporting 让客机主动上报哪些页已空闲。
痛点 在 CoCo 客机里,balloon 充气(宿主回收页)与 free page reporting 上报的页必须先 unaccept 才能真正交还宿主——而 virtio_balloon 与 efi/unaccepted 两套子系统此前从未对话:balloon 不知道有 unaccept 这一层,efi/unaccepted 也不知道 balloon 想要哪些页。结果是 CoCo 客机要么根本不能用 balloon,要么 balloon 把页标记空闲但宿主拿不走。
方案 13 个补丁打通三层:efi/unaccepted 提供按范围 unaccept 的 API;virtio_balloon 增加「高阶页充气」支持,一次还一大块而不是一页页还;最后在 balloon 充气与 free page reporting 两条路径上都挂上 unaccept 调用,并在 CoCo 环境下强制启用 ACCESS_PLATFORM(不允许宿主绕过加密直接读写客机内存)。
为什么 把 unaccept 做在 balloon 路径里而不是反过来,是因为 balloon 才是「决定哪些页要还」的决策方——efi/unaccepted 只负责执行;高阶页充气是为了让 unaccept 的代价摊薄——4K 一页一页 unaccept 在大气球下开销惊人;强制 ACCESS_PLATFORM 是 CoCo 的底线——balloon 一旦允许宿主直读客机内存,整个机密性模型就塌了。
效益 CoCo 客机首次具备动态内存伸缩能力——云厂商跑 TDX/SEV-SNP 客机时可以像普通 VM 一样做内存超售与气球回收,不再被「启动时给多少就锁死多少」卡住;机密计算的运营成本向普通虚拟化看齐。
下一步 Michael Tsirkin(virtio 维护者)当天就回复参与讨论;接下来要看 AMD SEV-SNP 与 Intel TDX 两边的实际启用路径,以及宿主流失的页如何重新 unaccept 回客机——这是机密计算落地真实云环境的关键一环。
一句话点评 机密计算从「能用」走向「好用」的必经一步——内存气球是云厂商的基本盘,不通它,CoCo 永远只能跑小场面。
🔗 原文
📰 mm
/ column ★ Morton 46 补丁大扫尾 + shmem v2 14 补丁续修——mm 板块冲上榜首
〔10-27 07:18 北京〕· [PATCH 00/46] mm: various (urgent?) fixes · + 〔10-27 21:03 北京〕· [PATCH v2 00/14] mm/shmem: various (urgent?) fixes
定位 mm 核心子系统,Andrew Morton 合并窗例行的「待修清单一次性清空」与 Hugh Dickins 针对 shmem/tmpfs 的连环修缮第二版。
做法 Morton 46 补丁覆盖 mempolicy/vma/migrate/page_alloc/kasan/shmem 各路径的修复,是典型的「mm 维护者扫尾批」;Hugh 的 shmem v2 14 补丁紧接昨天的 v1 16 补丁继续推进,新修 mempolicy 共享策略节点计费、tmpfs 配额软限制保留、F_SEAL_EXEC 在 setattr 与 ACL 路径的尊重、shmem 大 folio 在 fallocate 回滚/分裂失败/边界 swapin 失败下的连环 bug。
效益或下一步 tmpfs/共享内存是容器与 systemd-tmpfiles 的底座,这批修复直接落到所有跑容器的机器上;「urgent?」的自我调侃一如既往,但密度说明 mm 维护者认为这批不能等 7.5。"
和你相关 用 tmpfs、跑容器、调共享内存的都直接受益——这种「扫尾批」是 mm 进入 rc 周期前的最后清理窗口。
🔗 原文
★ mseal 新增 mseal_system_mappings= 启动参数——系统映射密封不再一刀切
〔10-27 19:43 北京〕· [PATCH 0/3] mseal sysmap: Choose system mapping sealing at boot · Chris Down (Meta)
定位 mm/mseal 层,mseal 是 Linux 6.10 引入的「虚拟内存区域密封」机制——被封的 VMA 不能再被 munmap/mprotect/remap 改动,主要用来防止恶意改写 vDSO、stack、sigtramp 这类系统映射。
做法 此前 mseal 是否密封 vDSO/sigtramp 等系统映射是编译期决定的;Chris Down 的 3 个补丁新增 mseal_system_mappings= 启动参数,让发行版/管理员可以在 boot 时选择「全封 / 不封 / 只封某些」,同时保留运行时单独 mseal 的能力。
效益或下一步 发行版不需要再为「要不要默认启用系统映射 mseal」做编译期赌博——可以先在不封模式下灰度,观察兼容性再逐步打开;对 Android 与 ChromeOS 这类对 mseal 依赖深的环境是直接的运维弹性。"
和你相关 mseal 是近年 mm 安全侧的慢热机制——这次启动参数化意味着主流发行版要开始认真考虑默认启用它了。
🔗 原文
★ slab 加固功能支持启动期选择——hardening 不再编译期锁死
〔10-27 15:35 北京〕· [PATCH 0/8] mm/slab: Support selecting slab hardening features at boot · Chris Down (Meta)
定位 mm/slab 分配器层,SLAB/SLUB 的加固选项(freelist hardening、redzone、poisoning、double-free 检测等)历来是 CONFIG 编译期开关。
做法 8 个补丁把各 slab 加固特性做成启动参数可选——slab_hardening= 允许在 boot 时按位启用/禁用,不再需要在「性能」与「加固」之间做编译期二选一。
效益或下一步 发行版可以出一份带全部加固的 kernel,让管理员按工作负载选择开多少——数据库机全开、HPC 全关、通用机开一半;安全团队也可以在事故响应时通过启动参数临时拉高加固等级。"
和你相关 与 mseal 启动参数同一天出现不是巧合——Meta 在推「内核安全机制运行时可选」这条线,后续大概率还有更多 CONFIG 被改成 boot param。
🔗 原文
mm 更多动态
○ [PATCH 0/3] mm: allow freezing mappings — Pratyush 新增映射冻结机制,把映射的页锁在内存里防换出
○ [PATCH 0/6] mm: fix pfn walker races with memory offline — pfn walker 与内存离线之间的竞态集中修
○ [PATCH v2] fs/proc/task_mmu: fix missed VMAs when reading /proc/PID/maps — /proc/PID/maps 漏 VMA 的竞态修到 v2
○ [PATCH RFC 0/2] kcov: collect early boot coverage of init_task — kcov 支持收集 init_task 早期启动覆盖率
○ [PATCH v2 0/2] mm/kasan: Detect double-free involving kfree_rcu_sheaf() — KASAN 检测 kfree_rcu_sheaf 双释放
○ [PATCH v4 0/3] pidfd: add task path ioctls — pidfd 新增任务路径 ioctl 系列到 v4
○ [PATCH 0/2] mm, iomap: account dirty at page granularity for per-block dirty folios — iomap 脏页按页粒度记账
📰 fs
/ column ★ overlayfs 容器化 syncfs——只同步自己写过的那部分
〔10-28 05:09 北京〕· [PATCH 00/10] ovl: only sync what was written through the overlay · Amir Goldstein
定位 VFS/overlayfs 层。overlayfs 是容器镜像的底座,syncfs 目前会把「upper 层所属文件系统」的所有脏页都同步——容器里上百个 overlay 共享同一个 upper 文件系统时,任一容器 syncfs 都把全部容器的数据都落盘。
做法 10 个补丁给 overlayfs 引入「自己的 bdi(backing_dev_info)」与「自己的 write_inode」——文件系统新增 SB_I_OVL_USE_SYNC_FS 标志(ext4/xfs/btrfs 按需启用);overlay inode 在被修改时标脏并缓存到自己名下;syncfs 只走 overlay 自己脏的 inode,不扩散到整个 upper 文件系统;同时把 lazytime 处理挪到 upper 一侧。
效益或下一步 容器宿主机上 syncfs 的粒度从「整个文件系统」缩到「这个 overlay」——高密度容器场景的 I/O 尖峰与延迟抖动显著缓解;这也是 overlayfs 走向「每个容器独立 qos」的必要基础。"
和你相关 跑容器/Kubernetes 的都受益——这是近年 overlayfs 最有商业价值的一次机制改进。
🔗 原文
★ iomap 移除 ->iomap_begin()/->iomap_end() legacy path——14 年老接口退役
〔10-28 05:58 北京〕· [PATCH 0/5] iomap: remaining patches for iomap_iter_next conversion · Joanne Koong
定位 VFS/iomap 层。iomap 是 XFS/btrfs/ext4 等文件系统共享的「文件偏移 → 物理块」映射框架,2011 年引入的 ->iomap_begin()/->iomap_end() 是其最初接口;近年社区在向迭代式的 ->iomap_next() 迁移。
做法 5 个补丁收尾这次迁移:nilfs2 与 fuse 分别把遗留的 ext_map iomap ops 切到 ->iomap_next();iomap 核心删掉 ->iomap_begin()/->iomap_end() 整条 legacy path,并把 iomap_iter_next_fn 直接作为回调传入(不再绕 struct iomap_ops);最后同步更新 iomap 文档。
效益或下一步 iomap 的对外接口收敛到「迭代器」一种形态——文件系统作者只需要实现一个回调,不再需要在两种 API 之间选边;legacy path 删除后维护成本与未来扩展(如大 folio、原子写)的路径都更清晰。"
和你相关 文件系统开发者直接相关——14 年老接口的退役意味着新写 iomap 文件系统只需要学一种模型。
🔗 原文
★ Landlock 新增 READ_METADATA/WRITE_METADATA——沙箱能管到元数据
〔10-27 19:39 北京〕· [PATCH v3 -next 15/18] landlock: Add READ_METADATA and WRITE_METADATA access rights · 华为
定位 LSM/Landlock 层。Landlock 是 Linux 5.13 引入的非特权沙箱机制,此前只能控制「读写文件内容」——对 stat/chmod/chown/utimes 这类元数据操作无权管辖。
做法 18 补丁 v3 分两部分:前 7 个补丁把 LSM 的 inode xattr/ACL/fileattr/setsecctx 钩子从 struct inode 改成 struct path,为「按路径判权限」打底;后 11 个补丁在 Landlock 引入 READ_METADATA/WRITE_METADATA 两类新访问权,配套自检、样例与文档更新。
效益或下一步 沙箱应用第一次能防止「通过 utimes/chmod 探测或破坏文件元数据」这一类侧信道;对运行不受信代码的服务器(CI、FaaS)是直接的攻击面收缩。"
和你相关 做沙箱/容器安全的重点关注——Landlock 这两年明显在从「演示机制」走向「生产可用」。
🔗 原文
fs 更多动态
○ [PATCH v2] inotify: do not coalesce rename events — inotify 不再合并 rename 事件,保住 cookie 配对
○ [PATCH] fs: annotate data race in get_nr_inodes() — KCSAN 标注 get_nr_inodes 的有意竞态
○ [PATCH v3 0/3] drm/vc4: hdmi: enable scrambling before the TMDS clock starts — vc4 HDMI 加扰时序修复
○ [PATCH RFC fstests] generic: add a test for multigrain timestamps — fstests 补 multigrain 时间戳用例
📰 DRM
/ column ★ 新增 splash DRM client——内核启动 splash 的统一框架 v6
〔10-27 21:53 北京〕· [PATCH v6 00/15] Add splash DRM client · Maxim Pedraza
定位 DRM client 框架层。DRM client 是内核内部「消费 DRM 显示能力」的抽象(fbdev 兼容层就是一个 client);启动 splash 长期以来由各家驱动/发行版各自实现,没有统一路径。
做法 15 补丁 v6 新增一个通用 splash DRM client——通过 dt-bindings 在 /chosen 下声明 boot logo 节点,client 在内核启动早期接管显示并把 logo 画到屏幕上;同时把 bootsplash 从 DRM 的 TODO 列表里删掉,意味着「内核侧启动画面」正式有了归属。
效益或下一步 嵌入式/消费电子厂商不再需要为「开机画面」自研一套早期显示路径;发行版 grub splash 与内核 splash 之间有了衔接点;DRM client 模型又添一个真实使用者,框架本身也被反向验证。"
和你相关 做嵌入式显示、消费电子开机体验的直接相关——内核第一次给「开机画面」一个统一的、与驱动解耦的框架。
🔗 原文
★ nova-core GSP 命令队列 v6——NVidia Rust 驱动向 r000 双消息类型推进
〔10-27 15:36 北京〕· [PATCH v6 00/15] gpu: nova-core: gsp: prepare the command queue for r000 dual-message types · NVidia
定位 GPU 固件通信层。nova-core 是 NVidia 用 Rust 重写的开源 GPU 驱动,GSP(GPU System Processor)是它与固件对话的通道;r000 是 NVidia 内部对新一代 GSP 固件接口的代号,引入「双消息类型」。
做法 15 补丁 v6 把命令队列从「单一消息格式」重构成「按消息类型分发」——新增 RpcMessageHeader 类型承载元信息、按类型分发处理函数、把 cmdq 模块的 RPC 与 poll 路径解耦;为 r000 双消息类型落地做前置。
效益或下一步 nova-core 离「能驱动新一代 NVidia GPU」又近一步——GSP 命令通道是固件升级路径上最先要被对齐的部分;Rust 类型系统被用来在编译期约束消息格式,避免 C 时代的 cast 链。"
和你相关 关注 Rust-for-Linux 真实落地的持续看点——nova-core 是检验「Rust 能不能写大型 GPU 驱动」的活样本。
🔗 原文
★ drm/msm 新增 Adreno 620——高通中端 GPU 支持补全
〔10-27 15:14 北京〕· [PATCH v4 0/5] drm/msm/adreno: Add Adreno 620
定位 GPU 平台驱动层。Adreno 620 是高通 SM6375/SD662 一代中端 SoC 上的 GPU,msm 驱动此前未支持。
做法 5 补丁 v4 在 a6xx 家族支持基础上加 Adreno 620 的设备表项、寄存器序列、GPMU/GMU 配置与速度仓表,沿用 a6xx 通用路径未做大改。
效益或下一步 中端高通平台的 Linux 显示/图形支持补全一格——这类「在已有框架里加新型号」的工作是 msm 驱动最稳定的产出形态。"
和你相关 做高通平台显示/图形的工作直接相关——Adreno 中端型号的支持完善,意味着更多手机/平板可以跑主线内核图形栈。
🔗 原文
DRM 更多动态
○ [PATCH v13 00/39] dyndbg: Fix classmaps API for subsystems — 动态调试 classmaps 39 补丁到 v13
○ [PATCH v2 0/9] Add __must_init and require explicit kobj_type::release — kobject 强制 release 初始化
○ [PATCH v5 0/3] Add a minimum age gate to the shrinker + LRU fixes — shrinker 加最小年龄门限
○ [PATCH 0/6] drm/vmwgfx: fix cursor validation and buffer lifetimes — vmwgfx 光标与 buffer 生命周期连修
○ [PATCH 0/3] drm/amd: Enable 2x1 tiled display support on Apple 5K iMacs — 苹果 5K iMac 双 tile 显示
○ [PATCH v5 00/18] Add HPD support for Rockchip Analogix DP — Rockchip Analogix DP 热插拔到 v5
○ [PATCH 0/3] DRM Google Nexus 10 display support — Nexus 10 显示支持提交
○ [PATCH v2 0/5] drm/msm: DMABUF_DEBUG fixes — msm DMABUF 调试修复
📰 PCI
/ column ★ PCI/IOV reset 改进 v2——VF 启用时的 reset 处理连改 13 补丁
〔10-28 00:05 北京〕· [PATCH v2 00/13] PCI/IOV: Improve reset handling with VFs enabled · Intel
定位 PCI/SR-IOV 层。SR-IOV 让一个物理 PCI 设备虚拟出多个 VF;当 PF 触发 reset 而 VF 还在用时,此前的处理在多个驱动里都有边角 bug——重置期间 VF 访问 PF 资源、reset 完成后 VF 状态错乱等。
做法 13 补丁 v2 引入 pci_iov_get_virtfn()、VF 迭代器、VF 锁辅助函数,把「reset 期间如何安全遍历并锁定 VF」做成公共原语;替换几个驱动里各自的临时方案,统一收敛到 PCI 核心。
效益或下一步 SR-IOV 网卡/GPU/加速卡在 PF reset 场景下的稳定性向「有公共原语兜底」收敛;后续驱动作者写 SR-IOV 代码可以直接复用这套迭代器与锁,不再每家发明一遍。"
和你相关 做 SR-IOV 网卡/加速器虚拟化的直接相关——云厂商 PF reset 引发的 VF 诡异故障大概率因此减少。
🔗 原文
★ Rust 实现 SPDM v5 23 补丁——PCIe 设备安全协议进入内核
〔10-27 13:25 北京〕· [PATCH v5 00/23] lib: Rust implementation of SPDM · Alistair Francis (WDC)
定位 lib/安全协议层。SPDM(Security Protocol and Data Model)是 DMTF 定义的设备认证与密钥协商协议,PCIe/CXL 设备靠它做「我是真卡、固件没被改」的证明;内核此前没有 SPDM 实现。
做法 23 补丁 v5 用 Rust 在内核 lib 里实现 SPDM 1.x——X.509 证书长度解析抽成公共助手、SPDM 消息编解码、会话建立、挑战响应、证书校验;选择 Rust 是为内存安全与类型化消息解析。
效益或下一步 PCIe/CXL 设备认证第一次有了内核侧的标准协议栈——NVMe SSD、CXL 内存、GPU 的「设备身份验证」不再依赖厂商私有方案;对机密计算与零信任数据中心是关键基础设施。"
和你相关 SPDM 是「零信任硬件」的底座——它的入核意味着 Linux 在数据中心安全协议栈上又往前走了一步。
🔗 原文
PCI 更多动态
○ [PATCH v4 00/16] PCI: dwc: Cache PCIe capability offset — DesignWare PCIe 缓存能力偏移 16 补丁到 v4
○ [PATCH v4 0/3] Fix amdgpu detection of pci=realloc — amdgpu 识别 pci=realloc 的 v4 修复
📰 media
/ column ★ ov5693 三补丁修 mode 切换与 autosuspend——IPU6 相机链路再补齐
〔10-28 04:29 北京〕· [PATCH 0/3] media: i2c: ov5693: Fix mode changes, flips and autosuspend
定位 V4L2 subdev 驱动层。ov5693 是 OmniVision 500 万像素 sensor,广泛用在笔记本相机(配合 Intel IPU6)。
做法 3 个补丁分别修:流启动时才写 mode 寄存器(此前 probe 期就写导致后续 mode 切换错位)、全分辨率翻转时保持 Bayer 顺序(否则图像偏色)、停止流时切到 autosuspend(此前一直占用 runtime PM 引用)。
效益或下一步 IPU6 + ov5693 的笔记本(不少 Dell/Lenovo 机型)相机在切换分辨率、翻转、休眠唤醒三条路径上同时变稳;autosuspend 引入后整机续航受益。"
和你相关 做笔记本相机链路的直接相关——ov5693 是 IPU6 主流搭配,这批修复是量产质量的补丁。
🔗 原文
media 更多动态
○ [PATCH v2 0/7] media: qcom: camss: Add SM8450 CAMSS support — 高通 SM8450 相机子系统支持 v2
○ [PATCH v5 0/7] arm64: dts: renesas: Enable ISP and IVC on RZ/V2H EVK — Renesas RZ/V2H 启用 mali-c55 ISP
○ [PATCH v3 0/5] media: atomisp: remove the circbuf library — atomisp 删掉私有 circbuf 库
○ [PATCH v3] media: qcom: camss: Don't reject sensor links faster than 4x the CSIPHY timer — camss 不再拒绝超速 sensor link
○ [PATCH v2 1/2] media: rppx1: Move register definitions to header — rppx1 寄存器定义挪头文件
📰 Rust
/ column ★ Rust SPI 驱动抽象 v6——SPI 子系统进入 Rust 时代
〔10-27 13:42 北京〕· [PATCH v6 0/3] Rust abstractions for the SPI driver subsystem
定位 Rust-for-Linux 子系统抽象层。SPI 是嵌入式最常用的低速总线之一,此前 Rust 驱动无法直接使用 SPI 子系统。
做法 3 个补丁 v6:给 SPI 子系统加 Rust helper(spi_device、spi_transfer、spi_message 的类型化封装);提供 SPI 驱动抽象基类;samples/rust 下新增一个完整的 SPI 驱动样例。
效益或下一步 SPI 是嵌入式驱动数量最大的总线之一,Rust 抽象就位意味着大量现有 C SPI 驱动可以被逐步替换;样例驱动的存在降低了新贡献者的入门门槛。"
和你相关 嵌入式 Rust 驱动开发的关键基础设施——SPI 是仅次于 I2C 的「必须有」抽象,它的就位补齐了 Rust 嵌入式版图的一大块。
🔗 原文
📰 virtio
/ column ★ virtio-blk 新增 inline 加密 v6——虚拟块设备有了原生加密通路
〔10-27 17:10 北京〕· [PATCH v6 0/4] Add inline encryption support · Qualcomm
定位 virtio 协议层。inline encryption 是硬件层的存储加密(数据在写到介质前由专用硬件加密,不经主 CPU),UFS/eMMC 上已普及;virtio-blk 此前没有对应能力。
做法 4 个补丁 v6:定义新的 feature bit 与配置空间;新增 inline 加密的管理命令(key 编程/查询);定义加密请求类型;补安全注意事项章节——属于 virtio 协议规范层面的扩展。
效益或下一步 虚拟化场景下虚拟机可以使用宿主硬件的 inline 加密引擎——云端机密计算/数据合规场景直接受益;virtio-blk 的能力集合向物理块设备看齐。"
和你相关 云存储/虚拟化安全的长期关注点——virtio-blk 加密通路的就位让「加密 VM 存储」不再依赖软件 dm-crypt。
🔗 原文
📌 机制雷达:6 条跨域大改动
/ section KVM dying-VM uaccess 硬校验 current->mm == kvm->mm,memslot 提前销毁,nVMX 清理不再切 vmcs01——堵整类 use-after-free · 原文 CoCo ballooning efi/unaccepted 与 virtio_balloon 首次对话,机密客机支持动态内存回收 · 原文 overlayfs 容器化 syncfs SB_I_OVL_USE_SYNC_FS + 私有 bdi + 私有 write_inode——syncfs 粒度从文件系统缩到 overlay · 原文 iomap legacy 退役 ->iomap_begin()/->iomap_end() 14 年老接口删除,统一为 ->iomap_next() 迭代器 · 原文 mseal 启动参数化 mseal_system_mappings= 让系统映射密封从编译期移到启动期——Meta 推动「安全机制运行时可选」 · 原文 PCI/IOV reset 原语 VF 迭代器 + VF 锁 + pci_iov_get_virtfn()——SR-IOV 复位处理收敛到公共原语 · 原文
📖 本期概念速查
/ section uaccess 内核访问用户空间内存的接口族(copy_to_user/copy_from_user 等)——必须显式走,不能直接解引用用户指针。
dying VM KVM 中处于销毁流程中的虚拟机——fd 已关、资源回收中但仍有内核路径持有引用,是 use-after-free 高发区。
CoCo Confidential Computing,机密计算——Intel TDX 与 AMD SEV-SNP 等让虚拟机内容对宿主也不可见的技术族。
unaccepted memory CoCo 客机启动时的内存初始状态——必须显式 accept 才能用,保证客机只承认它验过的页。
virtio_balloon 宿客之间协商内存回收的 virtio 设备——宿主「充气」要回内存,客机「放气」归还。
iomap VFS 层把「文件偏移 → 物理块」映射抽象出来的框架,XFS/btrfs/ext4 等共享。
mseal Linux 6.10 引入的虚拟内存区域密封机制——被封的 VMA 不能再被 munmap/mprotect 修改,防篡改系统映射。
SR-IOV / PF / VF PCI 单根虚拟化——一个物理设备(PF)虚拟出多个虚拟功能(VF)供不同虚拟机使用。
SPDM Security Protocol and Data Model——DMTF 标准的设备认证与密钥协商协议,PCIe/CXL 设备靠它证明身份。
inline encryption 存储硬件层的加密——数据在写入介质前由专用引擎加密,主 CPU 不参与,性能开销近零。
如果对你有用,点个赞,或转给需要的朋友。
数据来源:lore.kernel.org(全内核 13 列表)· 北京时间