虽然Linus Torvalds对接受可能破坏用户空间的内核更改非常严格,但他自己今天编写了一个补丁来更改mincore()系统调用以增强安全性。
MINCORE系统调用长期以来一直回到Linux 2.3天,用于指示进程的内存页是否驻留在内存(RAM)中。而不是计算缓存页面的数量,从Linux 4.21/5.0开始,调用mincore()现在将计算映射页面的数量而不是缓存页面。
Linus用他的补丁解释说:“传统语义的问题在于它暴露了许多系统缓存状态,它实际上可能不应该,并且用户不应该真正关心。所以让我们尽量避免信息泄漏通过简单地将语义更改为mincore()计算实际映射的页面,而不是如果它们出现故障则可能被廉价映射的页面......在许多方面,旧的语义甚至在信息泄漏问题之外都有些疯狂。“
这确实会影响fincore的输出以及可能的其他用户空间代码。但Linus“希望没有人真正拥有任何关心的工作流程,并且信息泄露是真实的。”它们可能最终仍然会改变MINCORE语义,这取决于是否为旧行为提及了有效的用例,以及是否仍然可以更改它以避免潜在的信息泄漏。
Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx
本文永久更新链接地址:https://www.linuxidc.com/Linux/2019-01/156215.htm