From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753090AbbJRKR0 (ORCPT ); Sun, 18 Oct 2015 06:17:26 -0400 Received: from terminus.zytor.com ([198.137.202.10]:41403 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752010AbbJRKRX (ORCPT ); Sun, 18 Oct 2015 06:17:23 -0400 Date: Sun, 18 Oct 2015 03:16:17 -0700 From: tip-bot for Andy Lutomirski Message-ID: Cc: torvalds@linux-foundation.org, luto@amacapital.net, dvlasenk@redhat.com, brgerst@gmail.com, bp@alien8.de, hpa@zytor.com, mingo@kernel.org, luto@kernel.org, peterz@infradead.org, linux-kernel@vger.kernel.org, bp@suse.de, tglx@linutronix.de Reply-To: hpa@zytor.com, bp@alien8.de, brgerst@gmail.com, luto@amacapital.net, dvlasenk@redhat.com, torvalds@linux-foundation.org, tglx@linutronix.de, linux-kernel@vger.kernel.org, bp@suse.de, luto@kernel.org, peterz@infradead.org, mingo@kernel.org In-Reply-To: <461e5c7d8fa3821529893a4893ac9c4bc37f9e17.1445035014.git.luto@kernel.org> References: <461e5c7d8fa3821529893a4893ac9c4bc37f9e17.1445035014.git.luto@kernel.org> To: linux-tip-commits@vger.kernel.org Subject: [tip:x86/asm] x86/entry/32: Fix FS and GS restore in opportunistic SYSEXIT Git-Commit-ID: 3bd29515d1cad26fa85a1a9b442de8816c1f5c54 X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit-ID: 3bd29515d1cad26fa85a1a9b442de8816c1f5c54 Gitweb: http://git.kernel.org/tip/3bd29515d1cad26fa85a1a9b442de8816c1f5c54 Author: Andy Lutomirski AuthorDate: Fri, 16 Oct 2015 15:42:55 -0700 Committer: Ingo Molnar CommitDate: Sun, 18 Oct 2015 12:11:16 +0200 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 Signed-off-by: Andy Lutomirski Cc: Andy Lutomirski Cc: Borislav Petkov Cc: Brian Gerst Cc: Denys Vlasenko Cc: H. Peter Anvin Cc: Linus Torvalds Cc: Peter Zijlstra Cc: Thomas Gleixner Fixes: 5f310f739b4c 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 --- arch/x86/entry/entry_32.S | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/x86/entry/entry_32.S b/arch/x86/entry/entry_32.S index 4f97f49..3eb572e 100644 --- a/arch/x86/entry/entry_32.S +++ b/arch/x86/entry/entry_32.S @@ -315,14 +315,14 @@ sysenter_past_esp: TRACE_IRQS_ON /* User mode traces as IRQs on. */ movl PT_EIP(%esp), %edx /* pt_regs->ip */ movl PT_OLDESP(%esp), %ecx /* pt_regs->sp */ +1: mov PT_FS(%esp), %fs + PTGS_TO_GS popl %ebx /* pt_regs->bx */ addl $2*4, %esp /* skip pt_regs->cx and pt_regs->dx */ popl %esi /* pt_regs->si */ popl %edi /* pt_regs->di */ popl %ebp /* pt_regs->bp */ popl %eax /* pt_regs->ax */ -1: mov PT_FS(%esp), %fs - PTGS_TO_GS /* * Return back to the vDSO, which will pop ecx and edx.