x86/sev: Avoid using __x86_return_thunk
commit 0ee9073000e8791f8b134a8ded31bcc767f7f232 upstream. Specifically, it's because __enc_copy() encrypts the kernel after being relocated outside the kernel in sme_encrypt_execute(), and the RET macro's jmp offset isn't amended prior to execution. Signed-off-by: Kim Phillips <kim.phillips@amd.com> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Signed-off-by: Borislav Petkov <bp@suse.de> Reviewed-by: Josh Poimboeuf <jpoimboe@kernel.org> Signed-off-by: Borislav Petkov <bp@suse.de> Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com> Signed-off-by: Ben Hutchings <ben@decadent.org.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
d6eb50e9b7
commit
5b2edaf709
@ -65,7 +65,9 @@ SYM_FUNC_START(sme_encrypt_execute)
|
|||||||
movq %rbp, %rsp /* Restore original stack pointer */
|
movq %rbp, %rsp /* Restore original stack pointer */
|
||||||
pop %rbp
|
pop %rbp
|
||||||
|
|
||||||
RET
|
/* Offset to __x86_return_thunk would be wrong here */
|
||||||
|
ret
|
||||||
|
int3
|
||||||
SYM_FUNC_END(sme_encrypt_execute)
|
SYM_FUNC_END(sme_encrypt_execute)
|
||||||
|
|
||||||
SYM_FUNC_START(__enc_copy)
|
SYM_FUNC_START(__enc_copy)
|
||||||
@ -151,6 +153,8 @@ SYM_FUNC_START(__enc_copy)
|
|||||||
pop %r12
|
pop %r12
|
||||||
pop %r15
|
pop %r15
|
||||||
|
|
||||||
RET
|
/* Offset to __x86_return_thunk would be wrong here */
|
||||||
|
ret
|
||||||
|
int3
|
||||||
.L__enc_copy_end:
|
.L__enc_copy_end:
|
||||||
SYM_FUNC_END(__enc_copy)
|
SYM_FUNC_END(__enc_copy)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user