]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commit
array_index_nospec: Sanitize speculative array de-references
authorDan Williams <dan.j.williams@intel.com>
Tue, 30 Jan 2018 01:02:22 +0000 (17:02 -0800)
committerSeth Forshee <seth.forshee@canonical.com>
Thu, 8 Feb 2018 03:08:34 +0000 (21:08 -0600)
commit5fa4e2ce0df946862315680f7bd987ca92590d41
treebde19f505b78e84b3cdb40339976192c2e2fdde4
parentd8ea0c3509ad4c2ecba5890fd5abaaf42a166359
array_index_nospec: Sanitize speculative array de-references

BugLink: http://bugs.launchpad.net/bugs/1748072
commit f3804203306e098dae9ca51540fcd5eb700d7f40

array_index_nospec() is proposed as a generic mechanism to mitigate
against Spectre-variant-1 attacks, i.e. an attack that bypasses boundary
checks via speculative execution. The array_index_nospec()
implementation is expected to be safe for current generation CPUs across
multiple architectures (ARM, x86).

Based on an original implementation by Linus Torvalds, tweaked to remove
speculative flows by Alexei Starovoitov, and tweaked again by Linus to
introduce an x86 assembly implementation for the mask generation.

Co-developed-by: Linus Torvalds <torvalds@linux-foundation.org>
Co-developed-by: Alexei Starovoitov <ast@kernel.org>
Suggested-by: Cyril Novikov <cnovikov@lynx.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-arch@vger.kernel.org
Cc: kernel-hardening@lists.openwall.com
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
Cc: Russell King <linux@armlinux.org.uk>
Cc: gregkh@linuxfoundation.org
Cc: torvalds@linux-foundation.org
Cc: alan@linux.intel.com
Link: https://lkml.kernel.org/r/151727414229.33451.18411580953862676575.stgit@dwillia2-desk3.amr.corp.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
include/linux/nospec.h [new file with mode: 0644]