v8
2026-09-07
Re: [PATCH v7 0/4] alloc_tag and module codetag section fixes · v8
模块 codetag 段引入 SH_ENTSIZE_STANDALONE 单独分配,调整预留/填充顺序并处理失败释放。
原始补丁链接
子 Patch(4)
1/4
alloc_tag: move release_module_tags() above reserve_module_tags()
把 release_module_tags() 移到 reserve_module_tags() 前面,使 reserve 失败后能直接调用它回滚已放入 maple tree 的 reservation;无功能变化。
2/4
module: introduce SH_ENTSIZE_STANDALONE for separately allocated sections
引入 SH_ENTSIZE_STANDALONE 标记独立分配的 section,percpu 段不再靠清 SHF_ALLOC 绕过 layout;layout/move 跳过这些节,apply_relocations 只查 SHF_ALLOC,find_sec 行为也一致。
3/4
module: allocate codetag sections before the regular module layout
将 module 的 codetag 段分配放到常规 layout 前一次完成,避免并发关 profiling 时 move_module() 把段写到 offset 0 覆盖数据;tag 区溢出返回 -EAGAIN 回退普通段,修复 /proc/allocinfo 损坏风险。
4/4
alloc_tag: release the reservation when populate fails
vm_module_tags_populate() 失败时释放已存入 maple tree 的 reservation,防止加载失败的模块泄漏 tag 映射项。