Skip to content

Commit 3bd2951

Browse files
amlutoIngo Molnar
authored andcommitted
x86/entry/32: Fix FS and GS restore in opportunistic SYSEXIT
We either need to restore them before popping and thus changing ESP, or we need to adjust the offsets. The former is simpler. Reported-and-tested-by: Borislav Petkov <bp@suse.de> Signed-off-by: Andy Lutomirski <luto@kernel.org> Cc: Andy Lutomirski <luto@amacapital.net> Cc: Borislav Petkov <bp@alien8.de> Cc: Brian Gerst <brgerst@gmail.com> Cc: Denys Vlasenko <dvlasenk@redhat.com> Cc: H. Peter Anvin <hpa@zytor.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Fixes: 5f310f7 x86/entry/32: ("Re-implement SYSENTER using the new C path") Link: http://lkml.kernel.org/r/461e5c7d8fa3821529893a4893ac9c4bc37f9e17.1445035014.git.luto@kernel.org Signed-off-by: Ingo Molnar <mingo@kernel.org>
1 parent 657c1ee commit 3bd2951

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

arch/x86/entry/entry_32.S

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -315,14 +315,14 @@ sysenter_past_esp:
315315
TRACE_IRQS_ON /* User mode traces as IRQs on. */
316316
movl PT_EIP(%esp), %edx /* pt_regs->ip */
317317
movl PT_OLDESP(%esp), %ecx /* pt_regs->sp */
318+
1: mov PT_FS(%esp), %fs
319+
PTGS_TO_GS
318320
popl %ebx /* pt_regs->bx */
319321
addl $2*4, %esp /* skip pt_regs->cx and pt_regs->dx */
320322
popl %esi /* pt_regs->si */
321323
popl %edi /* pt_regs->di */
322324
popl %ebp /* pt_regs->bp */
323325
popl %eax /* pt_regs->ax */
324-
1: mov PT_FS(%esp), %fs
325-
PTGS_TO_GS
326326

327327
/*
328328
* Return back to the vDSO, which will pop ecx and edx.

0 commit comments

Comments
 (0)