x86/entry: Remove skip_r11rcx
commit 1b331eeea7b8676fc5dbdf80d0a07e41be226177 upstream. Yes, r11 and rcx have been restored previously, but since they're being popped anyway (into rsi) might as well pop them into their own regs -- setting them to the value they already are. Less magical code. Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Signed-off-by: Borislav Petkov <bp@suse.de> Link: https://lore.kernel.org/r/20220506121631.365070674@infradead.org Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
40265bcd1b
commit
6834878ace
@@ -119,27 +119,19 @@ For 32-bit we have the following conventions - kernel is built with
|
|||||||
CLEAR_REGS
|
CLEAR_REGS
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro POP_REGS pop_rdi=1 skip_r11rcx=0
|
.macro POP_REGS pop_rdi=1
|
||||||
popq %r15
|
popq %r15
|
||||||
popq %r14
|
popq %r14
|
||||||
popq %r13
|
popq %r13
|
||||||
popq %r12
|
popq %r12
|
||||||
popq %rbp
|
popq %rbp
|
||||||
popq %rbx
|
popq %rbx
|
||||||
.if \skip_r11rcx
|
|
||||||
popq %rsi
|
|
||||||
.else
|
|
||||||
popq %r11
|
popq %r11
|
||||||
.endif
|
|
||||||
popq %r10
|
popq %r10
|
||||||
popq %r9
|
popq %r9
|
||||||
popq %r8
|
popq %r8
|
||||||
popq %rax
|
popq %rax
|
||||||
.if \skip_r11rcx
|
|
||||||
popq %rsi
|
|
||||||
.else
|
|
||||||
popq %rcx
|
popq %rcx
|
||||||
.endif
|
|
||||||
popq %rdx
|
popq %rdx
|
||||||
popq %rsi
|
popq %rsi
|
||||||
.if \pop_rdi
|
.if \pop_rdi
|
||||||
|
|||||||
@@ -189,8 +189,7 @@ SYM_INNER_LABEL(entry_SYSCALL_64_after_hwframe, SYM_L_GLOBAL)
|
|||||||
* perf profiles. Nothing jumps here.
|
* perf profiles. Nothing jumps here.
|
||||||
*/
|
*/
|
||||||
syscall_return_via_sysret:
|
syscall_return_via_sysret:
|
||||||
/* rcx and r11 are already restored (see code above) */
|
POP_REGS pop_rdi=0
|
||||||
POP_REGS pop_rdi=0 skip_r11rcx=1
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Now all regs are restored except RSP and RDI.
|
* Now all regs are restored except RSP and RDI.
|
||||||
|
|||||||
Reference in New Issue
Block a user