]> git.baikalelectronics.ru Git - kernel.git/commit
arm64: use RET instruction for exiting the trampoline
authorWill Deacon <will.deacon@arm.com>
Tue, 14 Nov 2017 16:15:59 +0000 (16:15 +0000)
committerCatalin Marinas <catalin.marinas@arm.com>
Mon, 8 Jan 2018 18:43:31 +0000 (18:43 +0000)
commitf59c540ae2b4d522462d1b45685b43f277189e0c
treed5ef283426b675e5e8d776e70f6e4655f3437e2c
parent5cc70c7a8ad3c9bac19a13b67e8650cf5a34f7ec
arm64: use RET instruction for exiting the trampoline

Speculation attacks against the entry trampoline can potentially resteer
the speculative instruction stream through the indirect branch and into
arbitrary gadgets within the kernel.

This patch defends against these attacks by forcing a misprediction
through the return stack: a dummy BL instruction loads an entry into
the stack, so that the predicted program flow of the subsequent RET
instruction is to a branch-to-self instruction which is finally resolved
as a branch to the kernel vectors with speculation suppressed.

Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
arch/arm64/kernel/entry.S