Commit 3fe26fa3 authored by Al Viro's avatar Al Viro

x86: get rid of pt_regs argument in sigreturn variants

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent b3af11af
...@@ -215,8 +215,9 @@ static int ia32_restore_sigcontext(struct pt_regs *regs, ...@@ -215,8 +215,9 @@ static int ia32_restore_sigcontext(struct pt_regs *regs,
return err; return err;
} }
asmlinkage long sys32_sigreturn(struct pt_regs *regs) asmlinkage long sys32_sigreturn(void)
{ {
struct pt_regs *regs = current_pt_regs();
struct sigframe_ia32 __user *frame = (struct sigframe_ia32 __user *)(regs->sp-8); struct sigframe_ia32 __user *frame = (struct sigframe_ia32 __user *)(regs->sp-8);
sigset_t set; sigset_t set;
unsigned int ax; unsigned int ax;
...@@ -241,8 +242,9 @@ asmlinkage long sys32_sigreturn(struct pt_regs *regs) ...@@ -241,8 +242,9 @@ asmlinkage long sys32_sigreturn(struct pt_regs *regs)
return 0; return 0;
} }
asmlinkage long sys32_rt_sigreturn(struct pt_regs *regs) asmlinkage long sys32_rt_sigreturn(void)
{ {
struct pt_regs *regs = current_pt_regs();
struct rt_sigframe_ia32 __user *frame; struct rt_sigframe_ia32 __user *frame;
sigset_t set; sigset_t set;
unsigned int ax; unsigned int ax;
......
...@@ -456,17 +456,16 @@ ia32_badsys: ...@@ -456,17 +456,16 @@ ia32_badsys:
ALIGN ALIGN
GLOBAL(\label) GLOBAL(\label)
leaq \func(%rip),%rax leaq \func(%rip),%rax
leaq -ARGOFFSET+8(%rsp),\arg /* 8 for return address */
jmp ia32_ptregs_common jmp ia32_ptregs_common
.endm .endm
CFI_STARTPROC32 CFI_STARTPROC32
PTREGSCALL stub32_rt_sigreturn, sys32_rt_sigreturn, %rdi PTREGSCALL stub32_rt_sigreturn, sys32_rt_sigreturn
PTREGSCALL stub32_sigreturn, sys32_sigreturn, %rdi PTREGSCALL stub32_sigreturn, sys32_sigreturn
PTREGSCALL stub32_execve, compat_sys_execve, %rcx PTREGSCALL stub32_execve, compat_sys_execve
PTREGSCALL stub32_fork, sys_fork, %rdi PTREGSCALL stub32_fork, sys_fork
PTREGSCALL stub32_vfork, sys_vfork, %rdi PTREGSCALL stub32_vfork, sys_vfork
ALIGN ALIGN
GLOBAL(stub32_clone) GLOBAL(stub32_clone)
......
...@@ -69,8 +69,8 @@ asmlinkage long sys32_fallocate(int, int, unsigned, ...@@ -69,8 +69,8 @@ asmlinkage long sys32_fallocate(int, int, unsigned,
/* ia32/ia32_signal.c */ /* ia32/ia32_signal.c */
asmlinkage long sys32_sigsuspend(int, int, old_sigset_t); asmlinkage long sys32_sigsuspend(int, int, old_sigset_t);
asmlinkage long sys32_sigreturn(struct pt_regs *); asmlinkage long sys32_sigreturn(void);
asmlinkage long sys32_rt_sigreturn(struct pt_regs *); asmlinkage long sys32_rt_sigreturn(void);
/* ia32/ipc32.c */ /* ia32/ipc32.c */
asmlinkage long sys32_ipc(u32, int, int, int, compat_uptr_t, u32); asmlinkage long sys32_ipc(u32, int, int, int, compat_uptr_t, u32);
......
...@@ -24,7 +24,7 @@ asmlinkage long sys_iopl(unsigned int); ...@@ -24,7 +24,7 @@ asmlinkage long sys_iopl(unsigned int);
asmlinkage int sys_modify_ldt(int, void __user *, unsigned long); asmlinkage int sys_modify_ldt(int, void __user *, unsigned long);
/* kernel/signal.c */ /* kernel/signal.c */
long sys_rt_sigreturn(struct pt_regs *); long sys_rt_sigreturn(void);
/* kernel/tls.c */ /* kernel/tls.c */
asmlinkage int sys_set_thread_area(struct user_desc __user *); asmlinkage int sys_set_thread_area(struct user_desc __user *);
...@@ -37,7 +37,7 @@ asmlinkage int sys_get_thread_area(struct user_desc __user *); ...@@ -37,7 +37,7 @@ asmlinkage int sys_get_thread_area(struct user_desc __user *);
asmlinkage int sys_sigsuspend(int, int, old_sigset_t); asmlinkage int sys_sigsuspend(int, int, old_sigset_t);
asmlinkage int sys_sigaction(int, const struct old_sigaction __user *, asmlinkage int sys_sigaction(int, const struct old_sigaction __user *,
struct old_sigaction __user *); struct old_sigaction __user *);
unsigned long sys_sigreturn(struct pt_regs *); unsigned long sys_sigreturn(void);
/* kernel/vm86_32.c */ /* kernel/vm86_32.c */
int sys_vm86old(struct vm86_struct __user *, struct pt_regs *); int sys_vm86old(struct vm86_struct __user *, struct pt_regs *);
......
...@@ -702,12 +702,6 @@ END(syscall_badsys) ...@@ -702,12 +702,6 @@ END(syscall_badsys)
/* /*
* System calls that need a pt_regs pointer. * System calls that need a pt_regs pointer.
*/ */
#define PTREGSCALL0(name) \
ENTRY(ptregs_##name) ; \
leal 4(%esp),%eax; \
jmp sys_##name; \
ENDPROC(ptregs_##name)
#define PTREGSCALL1(name) \ #define PTREGSCALL1(name) \
ENTRY(ptregs_##name) ; \ ENTRY(ptregs_##name) ; \
leal 4(%esp),%edx; \ leal 4(%esp),%edx; \
...@@ -723,23 +717,6 @@ ENTRY(ptregs_##name) ; \ ...@@ -723,23 +717,6 @@ ENTRY(ptregs_##name) ; \
jmp sys_##name; \ jmp sys_##name; \
ENDPROC(ptregs_##name) ENDPROC(ptregs_##name)
#define PTREGSCALL3(name) \
ENTRY(ptregs_##name) ; \
CFI_STARTPROC; \
leal 4(%esp),%eax; \
pushl_cfi %eax; \
movl PT_EDX(%eax),%ecx; \
movl PT_ECX(%eax),%edx; \
movl PT_EBX(%eax),%eax; \
call sys_##name; \
addl $4,%esp; \
CFI_ADJUST_CFA_OFFSET -4; \
ret; \
CFI_ENDPROC; \
ENDPROC(ptregs_##name)
PTREGSCALL0(sigreturn)
PTREGSCALL0(rt_sigreturn)
PTREGSCALL2(vm86) PTREGSCALL2(vm86)
PTREGSCALL1(vm86old) PTREGSCALL1(vm86old)
......
...@@ -896,7 +896,6 @@ ENTRY(stub_rt_sigreturn) ...@@ -896,7 +896,6 @@ ENTRY(stub_rt_sigreturn)
addq $8, %rsp addq $8, %rsp
PARTIAL_FRAME 0 PARTIAL_FRAME 0
SAVE_REST SAVE_REST
movq %rsp,%rdi
FIXUP_TOP_OF_STACK %r11 FIXUP_TOP_OF_STACK %r11
call sys_rt_sigreturn call sys_rt_sigreturn
movq %rax,RAX(%rsp) # fixme, this could be done at the higher layer movq %rax,RAX(%rsp) # fixme, this could be done at the higher layer
...@@ -911,7 +910,6 @@ ENTRY(stub_x32_rt_sigreturn) ...@@ -911,7 +910,6 @@ ENTRY(stub_x32_rt_sigreturn)
addq $8, %rsp addq $8, %rsp
PARTIAL_FRAME 0 PARTIAL_FRAME 0
SAVE_REST SAVE_REST
movq %rsp,%rdi
FIXUP_TOP_OF_STACK %r11 FIXUP_TOP_OF_STACK %r11
call sys32_x32_rt_sigreturn call sys32_x32_rt_sigreturn
movq %rax,RAX(%rsp) # fixme, this could be done at the higher layer movq %rax,RAX(%rsp) # fixme, this could be done at the higher layer
......
...@@ -597,8 +597,9 @@ sys_sigaction(int sig, const struct old_sigaction __user *act, ...@@ -597,8 +597,9 @@ sys_sigaction(int sig, const struct old_sigaction __user *act,
* Do a signal return; undo the signal stack. * Do a signal return; undo the signal stack.
*/ */
#ifdef CONFIG_X86_32 #ifdef CONFIG_X86_32
unsigned long sys_sigreturn(struct pt_regs *regs) unsigned long sys_sigreturn(void)
{ {
struct pt_regs *regs = current_pt_regs();
struct sigframe __user *frame; struct sigframe __user *frame;
unsigned long ax; unsigned long ax;
sigset_t set; sigset_t set;
...@@ -625,8 +626,9 @@ unsigned long sys_sigreturn(struct pt_regs *regs) ...@@ -625,8 +626,9 @@ unsigned long sys_sigreturn(struct pt_regs *regs)
} }
#endif /* CONFIG_X86_32 */ #endif /* CONFIG_X86_32 */
long sys_rt_sigreturn(struct pt_regs *regs) long sys_rt_sigreturn(void)
{ {
struct pt_regs *regs = current_pt_regs();
struct rt_sigframe __user *frame; struct rt_sigframe __user *frame;
unsigned long ax; unsigned long ax;
sigset_t set; sigset_t set;
...@@ -843,8 +845,9 @@ void signal_fault(struct pt_regs *regs, void __user *frame, char *where) ...@@ -843,8 +845,9 @@ void signal_fault(struct pt_regs *regs, void __user *frame, char *where)
} }
#ifdef CONFIG_X86_X32_ABI #ifdef CONFIG_X86_X32_ABI
asmlinkage long sys32_x32_rt_sigreturn(struct pt_regs *regs) asmlinkage long sys32_x32_rt_sigreturn(void)
{ {
struct pt_regs *regs = current_pt_regs();
struct rt_sigframe_x32 __user *frame; struct rt_sigframe_x32 __user *frame;
sigset_t set; sigset_t set;
unsigned long ax; unsigned long ax;
......
...@@ -125,7 +125,7 @@ ...@@ -125,7 +125,7 @@
116 i386 sysinfo sys_sysinfo compat_sys_sysinfo 116 i386 sysinfo sys_sysinfo compat_sys_sysinfo
117 i386 ipc sys_ipc sys32_ipc 117 i386 ipc sys_ipc sys32_ipc
118 i386 fsync sys_fsync 118 i386 fsync sys_fsync
119 i386 sigreturn ptregs_sigreturn stub32_sigreturn 119 i386 sigreturn sys_sigreturn stub32_sigreturn
120 i386 clone sys_clone stub32_clone 120 i386 clone sys_clone stub32_clone
121 i386 setdomainname sys_setdomainname 121 i386 setdomainname sys_setdomainname
122 i386 uname sys_newuname 122 i386 uname sys_newuname
...@@ -179,7 +179,7 @@ ...@@ -179,7 +179,7 @@
170 i386 setresgid sys_setresgid16 170 i386 setresgid sys_setresgid16
171 i386 getresgid sys_getresgid16 171 i386 getresgid sys_getresgid16
172 i386 prctl sys_prctl 172 i386 prctl sys_prctl
173 i386 rt_sigreturn ptregs_rt_sigreturn stub32_rt_sigreturn 173 i386 rt_sigreturn sys_rt_sigreturn stub32_rt_sigreturn
174 i386 rt_sigaction sys_rt_sigaction sys32_rt_sigaction 174 i386 rt_sigaction sys_rt_sigaction sys32_rt_sigaction
175 i386 rt_sigprocmask sys_rt_sigprocmask 175 i386 rt_sigprocmask sys_rt_sigprocmask
176 i386 rt_sigpending sys_rt_sigpending sys32_rt_sigpending 176 i386 rt_sigpending sys_rt_sigpending sys32_rt_sigpending
......
...@@ -464,7 +464,7 @@ int setup_signal_stack_si(unsigned long stack_top, int sig, ...@@ -464,7 +464,7 @@ int setup_signal_stack_si(unsigned long stack_top, int sig,
return 0; return 0;
} }
long sys_sigreturn(struct pt_regs *regs) long sys_sigreturn(void)
{ {
unsigned long sp = PT_REGS_SP(&current->thread.regs); unsigned long sp = PT_REGS_SP(&current->thread.regs);
struct sigframe __user *frame = (struct sigframe __user *)(sp - 8); struct sigframe __user *frame = (struct sigframe __user *)(sp - 8);
...@@ -577,7 +577,7 @@ int setup_signal_stack_si(unsigned long stack_top, int sig, ...@@ -577,7 +577,7 @@ int setup_signal_stack_si(unsigned long stack_top, int sig,
} }
#endif #endif
long sys_rt_sigreturn(struct pt_regs *regs) long sys_rt_sigreturn(void)
{ {
unsigned long sp = PT_REGS_SP(&current->thread.regs); unsigned long sp = PT_REGS_SP(&current->thread.regs);
struct rt_sigframe __user *frame = struct rt_sigframe __user *frame =
...@@ -601,14 +601,3 @@ long sys_rt_sigreturn(struct pt_regs *regs) ...@@ -601,14 +601,3 @@ long sys_rt_sigreturn(struct pt_regs *regs)
force_sig(SIGSEGV, current); force_sig(SIGSEGV, current);
return 0; return 0;
} }
#ifdef CONFIG_X86_32
long ptregs_sigreturn(void)
{
return sys_sigreturn(NULL);
}
long ptregs_rt_sigreturn(void)
{
return sys_rt_sigreturn(NULL);
}
#endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment