]> Pileus Git - ~andy/linux/blobdiff - kernel/signal.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp
[~andy/linux] / kernel / signal.c
index f268372c0cc06a54430ea3a4e4dbe8fbf39e2fb7..64c5deeaca5d9a70f64f391bc73fde46e300bff1 100644 (file)
@@ -2464,10 +2464,12 @@ do_sigaltstack (const stack_t __user *uss, stack_t __user *uoss, unsigned long s
                int ss_flags;
 
                error = -EFAULT;
-               if (!access_ok(VERIFY_READ, uss, sizeof(*uss))
-                   || __get_user(ss_sp, &uss->ss_sp)
-                   || __get_user(ss_flags, &uss->ss_flags)
-                   || __get_user(ss_size, &uss->ss_size))
+               if (!access_ok(VERIFY_READ, uss, sizeof(*uss)))
+                       goto out;
+               error = __get_user(ss_sp, &uss->ss_sp) |
+                       __get_user(ss_flags, &uss->ss_flags) |
+                       __get_user(ss_size, &uss->ss_size);
+               if (error)
                        goto out;
 
                error = -EPERM;