Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754054AbbDHCkC (ORCPT ); Tue, 7 Apr 2015 22:40:02 -0400 Received: from mail-ob0-f170.google.com ([209.85.214.170]:33110 "EHLO mail-ob0-f170.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751548AbbDHCj7 (ORCPT ); Tue, 7 Apr 2015 22:39:59 -0400 MIME-Version: 1.0 In-Reply-To: <1428439424-7258-3-git-send-email-dvlasenk@redhat.com> References: <1428439424-7258-1-git-send-email-dvlasenk@redhat.com> <1428439424-7258-3-git-send-email-dvlasenk@redhat.com> Date: Tue, 7 Apr 2015 22:39:59 -0400 Message-ID: Subject: Re: [PATCH 3/8] x86/asm/entry: Zero EXTRA_REGS for stub32_execve[at] too From: Brian Gerst To: Denys Vlasenko Cc: Ingo Molnar , Linus Torvalds , Steven Rostedt , Borislav Petkov , "H. Peter Anvin" , Andy Lutomirski , Oleg Nesterov , Frederic Weisbecker , Alexei Starovoitov , Will Drewry , Kees Cook , "the arch/x86 maintainers" , Linux Kernel Mailing List Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2621 Lines: 76 On Tue, Apr 7, 2015 at 4:43 PM, Denys Vlasenko wrote: > The change which affected how execve clears EXTRA_REGS missed > 32-bit execve syscalls. > > Fix this by using 64-bit execve stub epilogue for them too. > > Run-tested. > > Signed-off-by: Denys Vlasenko > CC: Linus Torvalds > CC: Steven Rostedt > CC: Ingo Molnar > CC: Borislav Petkov > CC: "H. Peter Anvin" > CC: Andy Lutomirski > CC: Oleg Nesterov > CC: Frederic Weisbecker > CC: Alexei Starovoitov > CC: Will Drewry > CC: Kees Cook > CC: x86@kernel.org > CC: linux-kernel@vger.kernel.org > --- > arch/x86/ia32/ia32entry.S | 2 -- > arch/x86/kernel/entry_64.S | 15 +++++++++++++++ > 2 files changed, 15 insertions(+), 2 deletions(-) > > diff --git a/arch/x86/ia32/ia32entry.S b/arch/x86/ia32/ia32entry.S > index 5d8f987..a821b1c 100644 > --- a/arch/x86/ia32/ia32entry.S > +++ b/arch/x86/ia32/ia32entry.S > @@ -571,8 +571,6 @@ GLOBAL(\label) > > PTREGSCALL stub32_rt_sigreturn, sys32_rt_sigreturn > PTREGSCALL stub32_sigreturn, sys32_sigreturn > - PTREGSCALL stub32_execve, compat_sys_execve > - PTREGSCALL stub32_execveat, compat_sys_execveat > PTREGSCALL stub32_fork, sys_fork > PTREGSCALL stub32_vfork, sys_vfork > > diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S > index 1b0793c..8e3ba38 100644 > --- a/arch/x86/kernel/entry_64.S > +++ b/arch/x86/kernel/entry_64.S > @@ -461,6 +461,21 @@ ENTRY(stub_x32_execveat) > END(stub_x32_execveat) > #endif > > +#ifdef CONFIG_IA32_EMULATION > +ENTRY(stub32_execve) > + CFI_STARTPROC > + call compat_sys_execve > + jmp return_from_execve > + CFI_ENDPROC > +END(stub32_execve) > +ENTRY(stub32_execveat) > + CFI_STARTPROC > + call compat_sys_execveat > + jmp return_from_execve > + CFI_ENDPROC > +END(stub32_execveat) > +#endif > + > /* > * sigreturn is special because it needs to restore all registers on return. > * This cannot be done with SYSRET, so use the IRET return path instead. The X32 and IA32 stubs are now identical and should be merged. -- Brian Gerst -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/