Re: [PATCH] x86: pass in pt_regs pointer for syscalls that need it(take 2)

From: H. Peter Anvin
Date: Wed Feb 11 2009 - 16:51:31 EST


Looks much better!

Brian Gerst wrote:
#ifdef CONFIG_X86_32
-/*
- * Note: do not pass in pt_regs directly as with tail-call optimization
- * GCC will incorrectly stomp on the caller's frame and corrupt user-space
- * register state:
- */
-asmlinkage int sys_rt_sigreturn(unsigned long __unused)
+int sys_rt_sigreturn(struct pt_regs *regs)
{
- struct pt_regs *regs = (struct pt_regs *)&__unused;
-
return do_rt_sigreturn(regs);
}
#else /* !CONFIG_X86_32 */

I observe with this sys_rt_sigreturn() is identical for both 32 and 64 bits (since int == long for 32 bits.) Furthermore, *both* are now no-op stubs around do_rt_sigreturn, so we can simply remove both stubs and change do_rt_sigreturn into sys_rt_sigreturn.

-hpa
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/