|
@@ -3303,12 +3303,15 @@ SYSCALL_DEFINE1(sigpending, old_sigset_t __user *, set)
|
|
|
#ifdef CONFIG_COMPAT
|
|
|
COMPAT_SYSCALL_DEFINE1(sigpending, compat_old_sigset_t __user *, set32)
|
|
|
{
|
|
|
+#ifdef __BIG_ENDIAN
|
|
|
sigset_t set;
|
|
|
- int err = do_sigpending(&set, sizeof(old_sigset_t));
|
|
|
- if (err == 0)
|
|
|
- if (copy_to_user(set32, &set, sizeof(old_sigset_t)))
|
|
|
- err = -EFAULT;
|
|
|
+ int err = do_sigpending(&set, sizeof(set.sig[0]));
|
|
|
+ if (!err)
|
|
|
+ err = put_user(set.sig[0], set32);
|
|
|
return err;
|
|
|
+#else
|
|
|
+ return sys_rt_sigpending((sigset_t __user *)set32, sizeof(*set32));
|
|
|
+#endif
|
|
|
}
|
|
|
#endif
|
|
|
|