array_index_nospec: Sanitize speculative array de-references
authorDan Williams <[email protected]>
Tue, 30 Jan 2018 01:02:22 +0000 (17:02 -0800)
committerThomas Gleixner <[email protected]>
Tue, 30 Jan 2018 20:54:29 +0000 (21:54 +0100)
commitf3804203306e098dae9ca51540fcd5eb700d7f40
treee5d7f2f6040328da6f78f17384e7000939118d18
parentf84a56f73dddaeac1dba8045b007f742f61cd2da
array_index_nospec: Sanitize speculative array de-references

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 <[email protected]>
Co-developed-by: Alexei Starovoitov <[email protected]>
Suggested-by: Cyril Novikov <[email protected]>
Signed-off-by: Dan Williams <[email protected]>
Signed-off-by: Thomas Gleixner <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: Peter Zijlstra <[email protected]>
Cc: Catalin Marinas <[email protected]>
Cc: Will Deacon <[email protected]>
Cc: Russell King <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Link: https://lkml.kernel.org/r/151727414229.33451.18411580953862676575.stgit@dwillia2-desk3.amr.corp.intel.com
include/linux/nospec.h [new file with mode: 0644]