|
@@ -3629,11 +3629,20 @@ int __compat_save_altstack(compat_stack_t __user *uss, unsigned long sp)
|
|
|
|
|
|
/**
|
|
|
* sys_sigpending - examine pending signals
|
|
|
- * @set: where mask of pending signal is returned
|
|
|
+ * @uset: where mask of pending signal is returned
|
|
|
*/
|
|
|
-SYSCALL_DEFINE1(sigpending, old_sigset_t __user *, set)
|
|
|
+SYSCALL_DEFINE1(sigpending, old_sigset_t __user *, uset)
|
|
|
{
|
|
|
- return sys_rt_sigpending((sigset_t __user *)set, sizeof(old_sigset_t));
|
|
|
+ sigset_t set;
|
|
|
+ int err;
|
|
|
+
|
|
|
+ if (sizeof(old_sigset_t) > sizeof(*uset))
|
|
|
+ return -EINVAL;
|
|
|
+
|
|
|
+ err = do_sigpending(&set);
|
|
|
+ if (!err && copy_to_user(uset, &set, sizeof(old_sigset_t)))
|
|
|
+ err = -EFAULT;
|
|
|
+ return err;
|
|
|
}
|
|
|
|
|
|
#ifdef CONFIG_COMPAT
|