On Tue, Apr 7, 2015 at 4:43 PM, Denys Vlasenko <dvlas...@redhat.com> 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 <dvlas...@redhat.com> > CC: Linus Torvalds <torva...@linux-foundation.org> > CC: Steven Rostedt <rost...@goodmis.org> > CC: Ingo Molnar <mi...@kernel.org> > CC: Borislav Petkov <b...@alien8.de> > CC: "H. Peter Anvin" <h...@zytor.com> > CC: Andy Lutomirski <l...@amacapital.net> > CC: Oleg Nesterov <o...@redhat.com> > CC: Frederic Weisbecker <fweis...@gmail.com> > CC: Alexei Starovoitov <a...@plumgrid.com> > CC: Will Drewry <w...@chromium.org> > CC: Kees Cook <keesc...@chromium.org> > CC: x...@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 majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/