Torvalds在上下文交换机上爆破“BEYOND BOUND”FLARING L1d

2020-06-02 15:58:20

作为今天合并的Linux5.8的初始更改集的一部分,x86/mm材料包括有争议的特性,即在上下文切换时选择刷新L1数据缓存。莱纳斯·托瓦尔兹(Linus Torvalds)最终决定恢复这一功能,因为至少现在他认为这是疯狂的。虽然这个功能是通过新的prctl选项选择加入的,默认情况下没有启用,并且是以帮助那些关心窥探辅助的数据采样漏洞或通过旁路的高速缓存泄漏,但尚未发现CPU漏洞的人的名义来实现的,但Linux的创建者Linus Torvalds目前并不信服。以下是他刚刚发布到内核邮件列表的x86/mm PR更改的评论要点:我是不是读错了?因为在我看来,这基本上是将高速缓存刷新指令导出到用户空间,并为进程提供了一种只说";让我安排的其他任何人也慢下来。我看不出有什么办法让系统管理员说这很愚蠢,不要这么做。换句话说,据我所知,这让疯狂的英特尔发布了有缺陷的CPU,并导致虚拟化代码出现问题(我并不太在意),并将其变成了。任何人都可以选择加入这种疾病,现在它甚至影响到不需要它的人和CPU,以及它完全没有意义的配置。更糟糕的是,它的软件刷新后备功能甚至不是我记忆中上一次讨论它时的架构,但最肯定的是,它将浪费大量时间来处理可能会也可能不会刷新L1D的动作。我不想要什么申请书寄出去。哦,我不想要。M_SOO_SPECIAL并且漂亮,是如此精致的一朵花,以至于我想刷新每个任务开关上的L1D,不管我在哪个CPU上,也不管是否有勘误表";。因为这个应用程序不仅会减慢自身的速度,它也会减慢其他应用程序的速度。我有一段时间很难追随是否这一切可能最终都是以STIBP静态分支条件为谓词,因此可能至少仅限于CPU';这首先是有问题的。但我最终还是把它拔了出来,因为我想不通,而且承诺书中的解释也没有澄清(而且确实暗示它与任何其他勘误表无关,因为它是针对未被发现的未来勘误表的)。因为我不想要一个随机的标志,所以我可以让内核做一些愚蠢的事情,让人们选择加入。我认为它需要双重选择加入。至少,启用SMT应该完全禁用这种疯狂的伪安全,因为在那种情况下它是完全没有意义的。在启用SMT的情况下,调度根本不是同步点,所以说我当然会在上下文切换时刷新L1是非常愚蠢的。我不希望内核做一些看起来愚蠢之外的事情。因为我真的认为这只是公关和伪安全,而且我认为让人们认为我太特别了,我应该启用这一功能,这是真正的代价。我';我非常高兴能接受教育,知道我为什么会犯错,但现在我会因为缺乏数据而撤销它。也许这在SMT上永远不会发生,因为所有那些微妙的静态分支规则,但我真的很想解释一下。

我们将看看亚马逊负责这个原始补丁工作的工程师、其他参与审查代码的人,或者英特尔的开源团队,是否有足够的理由将这些代码重新放回主线Linux内核中。