diff options
| author | Al Viro <viro@zeniv.linux.org.uk> | 2012-12-25 18:42:26 -0500 | 
|---|---|---|
| committer | Al Viro <viro@zeniv.linux.org.uk> | 2013-02-03 18:16:26 -0500 | 
| commit | 29fd448084e2da6d19ab675cf01d4a65fe2fcc44 (patch) | |
| tree | f5e04e60b38704b30a83e6665e10b475a4ec1f43 /arch/x86/ia32 | |
| parent | d7c43e4afb411db68bcf652c96e4206c6085f5e8 (diff) | |
| download | linux-29fd448084e2da6d19ab675cf01d4a65fe2fcc44.tar.bz2 | |
x86: switch to generic compat rt_sigaction()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'arch/x86/ia32')
| -rw-r--r-- | arch/x86/ia32/sys_ia32.c | 76 | 
1 files changed, 0 insertions, 76 deletions
| diff --git a/arch/x86/ia32/sys_ia32.c b/arch/x86/ia32/sys_ia32.c index cdf22ba9fa3a..ffe9751b1486 100644 --- a/arch/x86/ia32/sys_ia32.c +++ b/arch/x86/ia32/sys_ia32.c @@ -172,82 +172,6 @@ asmlinkage long sys32_mprotect(unsigned long start, size_t len,  	return sys_mprotect(start, len, prot);  } -asmlinkage long sys32_rt_sigaction(int sig, struct sigaction32 __user *act, -				   struct sigaction32 __user *oact, -				   unsigned int sigsetsize) -{ -	struct k_sigaction new_ka, old_ka; -	int ret; -	compat_sigset_t set32; - -	/* XXX: Don't preclude handling different sized sigset_t's.  */ -	if (sigsetsize != sizeof(compat_sigset_t)) -		return -EINVAL; - -	if (act) { -		compat_uptr_t handler, restorer; - -		if (!access_ok(VERIFY_READ, act, sizeof(*act)) || -		    __get_user(handler, &act->sa_handler) || -		    __get_user(new_ka.sa.sa_flags, &act->sa_flags) || -		    __get_user(restorer, &act->sa_restorer) || -		    __copy_from_user(&set32, &act->sa_mask, -				     sizeof(compat_sigset_t))) -			return -EFAULT; -		new_ka.sa.sa_handler = compat_ptr(handler); -		new_ka.sa.sa_restorer = compat_ptr(restorer); - -		/* -		 * FIXME: here we rely on _COMPAT_NSIG_WORS to be >= -		 * than _NSIG_WORDS << 1 -		 */ -		switch (_NSIG_WORDS) { -		case 4: new_ka.sa.sa_mask.sig[3] = set32.sig[6] -				| (((long)set32.sig[7]) << 32); -		case 3: new_ka.sa.sa_mask.sig[2] = set32.sig[4] -				| (((long)set32.sig[5]) << 32); -		case 2: new_ka.sa.sa_mask.sig[1] = set32.sig[2] -				| (((long)set32.sig[3]) << 32); -		case 1: new_ka.sa.sa_mask.sig[0] = set32.sig[0] -				| (((long)set32.sig[1]) << 32); -		} -	} - -	ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL); - -	if (!ret && oact) { -		/* -		 * FIXME: here we rely on _COMPAT_NSIG_WORS to be >= -		 * than _NSIG_WORDS << 1 -		 */ -		switch (_NSIG_WORDS) { -		case 4: -			set32.sig[7] = (old_ka.sa.sa_mask.sig[3] >> 32); -			set32.sig[6] = old_ka.sa.sa_mask.sig[3]; -		case 3: -			set32.sig[5] = (old_ka.sa.sa_mask.sig[2] >> 32); -			set32.sig[4] = old_ka.sa.sa_mask.sig[2]; -		case 2: -			set32.sig[3] = (old_ka.sa.sa_mask.sig[1] >> 32); -			set32.sig[2] = old_ka.sa.sa_mask.sig[1]; -		case 1: -			set32.sig[1] = (old_ka.sa.sa_mask.sig[0] >> 32); -			set32.sig[0] = old_ka.sa.sa_mask.sig[0]; -		} -		if (!access_ok(VERIFY_WRITE, oact, sizeof(*oact)) || -		    __put_user(ptr_to_compat(old_ka.sa.sa_handler), -			       &oact->sa_handler) || -		    __put_user(ptr_to_compat(old_ka.sa.sa_restorer), -			       &oact->sa_restorer) || -		    __put_user(old_ka.sa.sa_flags, &oact->sa_flags) || -		    __copy_to_user(&oact->sa_mask, &set32, -				   sizeof(compat_sigset_t))) -			return -EFAULT; -	} - -	return ret; -} -  asmlinkage long sys32_sigaction(int sig, struct old_sigaction32 __user *act,  				struct old_sigaction32 __user *oact)  { |