作为 Linux 6.18 内核加固更新的部分,这次合并的并非直接的加固改进,而是对内核配置“Kconfig”系统的长期未解决的增强。引入这个新的“过渡”关键字用于 Kconfig 选项,可以简化在内核版本间重命名 Kconfig 选项的过程,减少对维护自己内核配置和构建的用户造成的破坏和头痛。
加固请求中包含了 Kconfig 的“过渡”支持,因为它将“CONFIG_CFI_CLANG”选项重命名为“CLANG_CFI”,因为 GCC 编译器现在也增加了控制流完整性(CFI)支持。这只是众多需要重命名 Kconfig 选项的案例中的最新例子,如果用户在升级现有内核配置并针对新内核版本构建时,能够正确反映这些更改,那将是非常好的。通过添加“过渡”选项,可以简化并自动反映内核配置的正确选项名称。
Kees Cook 用补丁添加了过渡符号属性进行解释:
“在内核选项迁移过程中(例如,从 CONFIG_CFI_CLANG 迁移到 CONFIG_CFI),现有的.config 文件需要保持向后兼容,同时防止已弃用的选项出现在新生成的配置中。这使用现有的 Kconfig 机制具有挑战性,因为:
1. 简单地删除旧选项会破坏现有的.config 文件。
2. 手动将选项列为“已弃用”会使它无谓地可见,并且仍然会将它们写入新的.config 文件。
3. 使用任何方法来移除可见性(例如没有’提示’、’if n’等)将阻止选项被处理。添加一个”过渡”属性,该属性创建的符号是:
– 在配置期间处理(可以影响其他符号的默认值)
– 从用户菜单中隐藏(不会出现提示)
– 从新编写的.config 文件中省略(将迁移)
– 仅限于只有帮助部分(没有默认值、选择等),使其真正成为“先前值透传”选项。”
Kconfig 过渡使用的示例:

这个长期未解决的 Linux 内核配置处理改进已合并到 Linux 6.18 Git 中,作为强化更新的部分。
转自 Linux’s New “Transitional” Feature A Long Overdue Improvement For Kernel Configurations – Phoronix
Linuxeden开源社区