Skip to content

Commit

Permalink
parisc: fix error return codes for rt_sigaction and rt_sigprocmask
Browse files Browse the repository at this point in the history
Signed-off-by: Helge Deller <deller@gmx.de>
  • Loading branch information
Helge Deller committed Feb 20, 2013
1 parent bf581e1 commit 2e800df
Showing 1 changed file with 11 additions and 4 deletions.
15 changes: 11 additions & 4 deletions arch/parisc/kernel/signal32.c
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ put_sigset32(compat_sigset_t __user *up, sigset_t *set, size_t sz)
{
compat_sigset_t s;

if (sz != sizeof *set)
if (sz != sizeof(compat_sigset_t))
return -EINVAL;
sigset_64to32(&s, set);

Expand All @@ -78,7 +78,7 @@ get_sigset32(compat_sigset_t __user *up, sigset_t *set, size_t sz)
compat_sigset_t s;
int r;

if (sz != sizeof *set)
if (sz != sizeof(compat_sigset_t))
return -EINVAL;

if ((r = copy_from_user(&s, up, sz)) == 0) {
Expand All @@ -94,8 +94,11 @@ int sys32_rt_sigprocmask(int how, compat_sigset_t __user *set, compat_sigset_t _
sigset_t old_set, new_set;
int ret;

if (set && get_sigset32(set, &new_set, sigsetsize))
return -EFAULT;
if (set) {
ret = get_sigset32(set, &new_set, sigsetsize);
if (ret)
return ret;
}

KERNEL_SYSCALL(ret, sys_rt_sigprocmask, how, set ? (sigset_t __user *)&new_set : NULL,
oset ? (sigset_t __user *)&old_set : NULL, sigsetsize);
Expand Down Expand Up @@ -128,6 +131,10 @@ sys32_rt_sigaction(int sig, const struct sigaction32 __user *act, struct sigacti
struct k_sigaction new_sa, old_sa;
int ret = -EINVAL;

/* XXX: Don't preclude handling different sized sigset_t's. */
if (sigsetsize != sizeof(compat_sigset_t))
return -EINVAL;

if (act) {
if (copy_from_user(&new_sa32.sa, act, sizeof new_sa32.sa))
return -EFAULT;
Expand Down

0 comments on commit 2e800df

Please sign in to comment.