v1
2026-11-08
解耦MTE与KASAN · v1
重构 arm64 MTE 的 mte_*() 接口,移除对 KASAN 的依赖层,使 HW_TAGS MTE 可独立复用并减少重复代码。
原始补丁链接
子 Patch(4)
1/4
kasan: rework hw_{force=>flush}_async_tag_fault()
重命名并改签名 hw_force_async_tag_fault,将通用 KASAN 的异步 fault 上报与 arm64 硬件 flush 分离,消除 kasan_report_async 和 mte_check_tfsr_exit 的循环 include。
2/4
kasan: rework hw_{get=>set}_random_tag()
把 hw_get_random_tag() 改为直接接收目标指针的 hw_set_random_tag(),arm64 用 IRG 原地打随机 tag,避免先构造非法地址再提取、移位 tag,便于编译器优化。
3/4
kasan: provide empty stub for kasan_report_async()
为 kasan_report_async() 提供空 stub,使未启用 KASAN_HW_TAGS 的配置也能编译调用点,调用者无需再写 #ifdef 保护。
4/4
kasan: drop mte-kasan.h from arch-agnostic header
从通用 kasan.h 移除 asm/mte-kasan.h 依赖,改由架构定义 KASAN_GRANULE_SIZE 并提供兜底,arm64 在自身 kasan.h 设置,避免把 KASAN_HW_TAGS 等同于 MTE。