Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 129961
b: refs/heads/master
c: 552b8aa
h: refs/heads/master
i:
  129959: 0167f72
v: v3
  • Loading branch information
Ingo Molnar committed Jan 21, 2009
1 parent f665980 commit 59980ea
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 4 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: e0a96129db574d6365e3439d16d88517c437ab33
refs/heads/master: 552b8aa4d1edcc1c764ff6f61a7686347a2d1827
2 changes: 1 addition & 1 deletion trunk/arch/x86/include/asm/syscalls.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ asmlinkage int sys_sigaction(int, const struct old_sigaction __user *,
struct old_sigaction __user *);
asmlinkage int sys_sigaltstack(unsigned long);
asmlinkage unsigned long sys_sigreturn(unsigned long);
asmlinkage int sys_rt_sigreturn(struct pt_regs);
asmlinkage int sys_rt_sigreturn(unsigned long);

/* kernel/ioport.c */
asmlinkage long sys_iopl(unsigned long);
Expand Down
11 changes: 9 additions & 2 deletions trunk/arch/x86/kernel/signal.c
Original file line number Diff line number Diff line change
Expand Up @@ -632,9 +632,16 @@ static long do_rt_sigreturn(struct pt_regs *regs)
}

#ifdef CONFIG_X86_32
asmlinkage int sys_rt_sigreturn(struct pt_regs regs)
/*
* 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)
{
return do_rt_sigreturn(&regs);
struct pt_regs *regs = (struct pt_regs *)&__unused;

return do_rt_sigreturn(regs);
}
#else /* !CONFIG_X86_32 */
asmlinkage long sys_rt_sigreturn(struct pt_regs *regs)
Expand Down

0 comments on commit 59980ea

Please sign in to comment.