
去年,AMD 和 Intel 作为 x86 生态系统顾问小组的一部分,宣布了用于 x86 内存标记的 ChkTag,以更好地对抗缓冲区溢出和使用后释放错误。在为 ChkTag 准备未来处理器时,Intel 已经开始调整他们的线性地址掩码(LAM)支持,以更好地与之配合。
ChkTag 将带来新的 x86 指令,用于检测内存安全违规,并提供各种其他控制,以在处理内存安全问题时提供很大的灵活性。线性地址掩码(LAM)是最近 Intel CPU 上已有的一个功能,允许元数据(如标签)存储在 64 位指针的上位,这些位通常被忽略或未使用。LAM 对垃圾收集器、内存清理程序、安全检查等非常有用。
Intel Linux 工程师们一直在准备一个稳定的 x86 LAM 用户界面,以应对 ChkTag。Intel 工程师 Maciej Wieczor-Retman 发布了最新的补丁,旨在简化考虑到 ChkTag 的 LAM 界面:
在 ChkTag 发布之后,值得准备一个稳定的 x86 线性地址掩码(lam)用户界面。lam 的一个重要方面是标签宽度,将其与其他行业解决方案对齐可以提供一个更流行、更通用的界面,其他技术可以加以利用。
ChkTag 将使用 4 位标签,而其他内存标记实现(例如 Arm 的 MTE)似乎也在朝着这个方向发展,因此将 Linux 中的 lam 聚合到相同的规范是合理的。尽管 x86 的 LAM 支持 6 位标签,但将 lam 默认设置为 4 位也是有益的,因为 ChkTag 可能是接口的主要用户,这样的连接应该会在未来简化事情。
如果将来出现用例,6 位标签可以作为调试功能提供,并且可以通过 debugfs 启用。
该补丁集还清理了一些引用 LAM_U48 的注释,该功能在内核中未实现,注释不应暗示可以启用。
这些最新的代码目前正在接受审查,以便合并到未来的 Linux 内核版本中。至于 ChkTag 本身,到目前为止,我们还没有看到任何编译器或内核补丁出现,但预计很快就会开始出现。
转自 Intel Adapting Linux’s LAM In Preparing For ChkTag – Phoronix
Linuxeden开源社区