在昨天发布的 Linux 6.9-rc4 版本中,Linus Torvalds 提出了一个有趣的小插曲,以对抗 Kconfig 解析器,因为这种内核配置格式无法正确处理制表符,而只能将空格假定为空白。
由于上周内核跟踪 Kconfig 文件中用空格替换制表符的补丁已经排好队,Linus Torvalds 决定亲自出马,解决无法处理制表符的 Kconfig 解析器的问题……Torvalds 编写了一个补丁,故意在 Kconfig 中添加了一些自己的制表符,以阻止任何无法正确处理制表符的第三方解析器。
Torvalds 在通用 Kconfig 文件中添加了这些有意隐藏的选项卡,用于处理内核的页面大小。因此,对于任何无法正确使用制表符的解析器来说,这肯定会造成严重的、明显的破坏。Torvalds 在补丁中写道
“提交 d96c36004e31(”tracing: Fix FTRACE_RECORD_RECURSION_SIZE Kconfig entry”)删除了一个隐藏选项卡,因为它显然在某些第三方内核配置解析工具中显示了破绽。
虽然不清楚是什么工具,但我们还是要确保它得到修复。因为如果不能将制表符解析为空白,就不应该解析内核 Kconfig 文件。
事实上,让这种破坏比某些深奥的ftrace记录大小选项更明显。如果不能解析制表符,就不能有页面大小。
是的,制表符与空格的混淆是 Unix 的传统,而 “make “在这方面的缺陷也是出了名的。但这并不意味着可以这样做。
我想在我们的 Kconfig 文件中添加更多随机制表符,但我不想让事情变得比必要时更难看。但如果我们发现有更多这种愚蠢的工具,这**可能是必要的”。
莱纳斯-托瓦尔兹(Linus Torvalds)在内核邮件列表上的语言曾经丰富多彩,但他依然能有效地完成 Linux 内核的工作。
转自 Linus Torvalds Injects Tabs To Thwart Kconfig Parsers Not Correctly Handling Them – Phoronix