[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20220421141055.316239-8-jiangshanlai@gmail.com>
Date: Thu, 21 Apr 2022 22:10:54 +0800
From: Lai Jiangshan <jiangshanlai@...il.com>
To: linux-kernel@...r.kernel.org
Cc: Borislav Petkov <bp@...en8.de>,
Peter Zijlstra <peterz@...radead.org>,
Josh Poimboeuf <jpoimboe@...hat.com>,
Andy Lutomirski <luto@...nel.org>,
Thomas Gleixner <tglx@...utronix.de>,
Juergen Gross <jgross@...e.com>, x86@...nel.org,
Lai Jiangshan <jiangshan.ljs@...group.com>,
Ingo Molnar <mingo@...hat.com>,
Dave Hansen <dave.hansen@...ux.intel.com>,
"H. Peter Anvin" <hpa@...or.com>,
"Kirill A. Shutemov" <kirill.shutemov@...ux.intel.com>,
Fenghua Yu <fenghua.yu@...el.com>,
"Chang S. Bae" <chang.seok.bae@...el.com>
Subject: [PATCH V6 7/8] x86/entry: Remove the branch in sync_regs()
From: Lai Jiangshan <jiangshan.ljs@...group.com>
In non-XENPV, the tss.sp0 is always the trampoline stack, and
sync_regs() is called on non-XENPV only since error_entry() is not
called on XENPV, so the stack must be the trampoline stack or one of
the IST stack if it is from user mode or bad iret.
Remove the check in sync_regs() and always copy the pt_regs from the
stack in the cpu entry area to the task stack.
Cc: Juergen Gross <jgross@...e.com>
Signed-off-by: Lai Jiangshan <jiangshan.ljs@...group.com>
---
arch/x86/kernel/traps.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
index 111b18d57a54..e1cb4c009d54 100644
--- a/arch/x86/kernel/traps.c
+++ b/arch/x86/kernel/traps.c
@@ -845,13 +845,13 @@ DEFINE_IDTENTRY_RAW(exc_int3)
/*
* Help handler running on a per-cpu (IST or entry trampoline) stack
* to switch to the normal thread stack if the interrupted code was in
- * user mode. The actual stack switch is done in entry_64.S
+ * user mode. The actual stack switch is done in entry_64.S.
*/
asmlinkage __visible noinstr struct pt_regs *sync_regs(struct pt_regs *eregs)
{
struct pt_regs *regs = (struct pt_regs *)this_cpu_read(cpu_current_top_of_stack) - 1;
- if (regs != eregs)
- *regs = *eregs;
+
+ *regs = *eregs;
return regs;
}
--
2.19.1.6.gb485710b
Powered by blists - more mailing lists