v3
2026-10-14
memfd_luo 拒绝私有 shmem · v3
v3 拒绝保留内核私有 shmem,避免 SysV SHM 与 SHMEM_F_LOCKED 更新竞态。
原始补丁链接
子 Patch(3)
1/3
mm/memfd_luo: reject kernel-private shmem files
[mm/memfd_luo: reject kernel-private shmem files] memfd_luo_can_preserve() accepts any unlinked shmem file. That includes SysV SHM files, which are created with shmem_kernel_file_setup() and marked S
2/3
mm/memfd_luo: carry the sealed exec-bit state in the preserved record
memfd_luo 保留记录需保存 F_SEAL_EXEC 封印时的 inode mode/exec mask;否则恢复用 memfd_alloc_file() 默认 0777,会把原不可执行 memfd 变成可执行并触发 W^X 写封印,破坏封印保证。
3/3
mm/memfd_luo: release preserved folios when retrieve fails
retrieve() 失败时只释放序列化结构,保留的 folios 和数组会泄漏到下一内核,因 memfd_luo_finish() 对失败记录跳过清理;让 retrieve() 复用 finish() 清理逻辑释放 folios,且 retrieve_folios() 消费后不可二次释放。