|
Borislav Petkov |
5efdb6 |
From: Peter Zijlstra <peterz@infradead.org>
|
|
Borislav Petkov |
5efdb6 |
Date: Fri, 6 May 2022 14:14:35 +0200
|
|
Borislav Petkov |
5efdb6 |
Subject: x86/entry: Remove skip_r11rcx
|
|
Borislav Petkov |
5efdb6 |
Git-commit: 1b331eeea7b8676fc5dbdf80d0a07e41be226177
|
|
Borislav Petkov |
5efdb6 |
Patch-mainline: v5.19-rc1
|
|
Borislav Petkov |
5efdb6 |
References: bsc#1201644
|
|
Borislav Petkov |
5efdb6 |
|
|
Borislav Petkov |
5efdb6 |
Yes, r11 and rcx have been restored previously, but since they're being
|
|
Borislav Petkov |
5efdb6 |
popped anyway (into rsi) might as well pop them into their own regs --
|
|
Borislav Petkov |
5efdb6 |
setting them to the value they already are.
|
|
Borislav Petkov |
5efdb6 |
|
|
Borislav Petkov |
5efdb6 |
Less magical code.
|
|
Borislav Petkov |
5efdb6 |
|
|
Borislav Petkov |
5efdb6 |
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
|
|
Borislav Petkov |
5efdb6 |
Signed-off-by: Borislav Petkov <bp@suse.de>
|
|
Borislav Petkov |
5efdb6 |
Link: https://lore.kernel.org/r/20220506121631.365070674@infradead.org
|
|
Borislav Petkov |
5efdb6 |
---
|
|
Borislav Petkov |
5efdb6 |
arch/x86/entry/calling.h | 10 +---------
|
|
Borislav Petkov |
5efdb6 |
arch/x86/entry/entry_64.S | 3 +--
|
|
Borislav Petkov |
5efdb6 |
2 files changed, 2 insertions(+), 11 deletions(-)
|
|
Borislav Petkov |
5efdb6 |
|
|
Borislav Petkov |
5efdb6 |
--- a/arch/x86/entry/calling.h
|
|
Borislav Petkov |
5efdb6 |
+++ b/arch/x86/entry/calling.h
|
|
Borislav Petkov |
5efdb6 |
@@ -153,27 +153,19 @@ For 32-bit we have the following convent
|
|
Borislav Petkov |
5efdb6 |
|
|
Borislav Petkov |
5efdb6 |
.endm
|
|
Borislav Petkov |
5efdb6 |
|
|
Borislav Petkov |
5efdb6 |
-.macro POP_REGS pop_rdi=1 skip_r11rcx=0
|
|
Borislav Petkov |
5efdb6 |
+.macro POP_REGS pop_rdi=1
|
|
Borislav Petkov |
5efdb6 |
popq %r15
|
|
Borislav Petkov |
5efdb6 |
popq %r14
|
|
Borislav Petkov |
5efdb6 |
popq %r13
|
|
Borislav Petkov |
5efdb6 |
popq %r12
|
|
Borislav Petkov |
5efdb6 |
popq %rbp
|
|
Borislav Petkov |
5efdb6 |
popq %rbx
|
|
Borislav Petkov |
5efdb6 |
- .if \skip_r11rcx
|
|
Borislav Petkov |
5efdb6 |
- popq %rsi
|
|
Borislav Petkov |
5efdb6 |
- .else
|
|
Borislav Petkov |
5efdb6 |
popq %r11
|
|
Borislav Petkov |
5efdb6 |
- .endif
|
|
Borislav Petkov |
5efdb6 |
popq %r10
|
|
Borislav Petkov |
5efdb6 |
popq %r9
|
|
Borislav Petkov |
5efdb6 |
popq %r8
|
|
Borislav Petkov |
5efdb6 |
popq %rax
|
|
Borislav Petkov |
5efdb6 |
- .if \skip_r11rcx
|
|
Borislav Petkov |
5efdb6 |
- popq %rsi
|
|
Borislav Petkov |
5efdb6 |
- .else
|
|
Borislav Petkov |
5efdb6 |
popq %rcx
|
|
Borislav Petkov |
5efdb6 |
- .endif
|
|
Borislav Petkov |
5efdb6 |
popq %rdx
|
|
Borislav Petkov |
5efdb6 |
popq %rsi
|
|
Borislav Petkov |
5efdb6 |
.if \pop_rdi
|
|
Borislav Petkov |
5efdb6 |
--- a/arch/x86/entry/entry_64.S
|
|
Borislav Petkov |
5efdb6 |
+++ b/arch/x86/entry/entry_64.S
|
|
Borislav Petkov |
5efdb6 |
@@ -299,8 +299,7 @@ GLOBAL(entry_SYSCALL_64_after_hwframe)
|
|
Borislav Petkov |
5efdb6 |
* perf profiles. Nothing jumps here.
|
|
Borislav Petkov |
5efdb6 |
*/
|
|
Borislav Petkov |
5efdb6 |
syscall_return_via_sysret:
|
|
Borislav Petkov |
5efdb6 |
- /* rcx and r11 are already restored (see code above) */
|
|
Borislav Petkov |
5efdb6 |
- POP_REGS pop_rdi=0 skip_r11rcx=1
|
|
Borislav Petkov |
5efdb6 |
+ POP_REGS pop_rdi=0
|
|
Borislav Petkov |
5efdb6 |
|
|
Borislav Petkov |
5efdb6 |
/*
|
|
Borislav Petkov |
5efdb6 |
* Now all regs are restored except RSP and RDI.
|