vserver 2.0 rc7
[linux-2.6.git] / arch / ia64 / ia32 / ia32_signal.c
index 3b385f5..ebb89be 100644 (file)
@@ -460,10 +460,9 @@ __ia32_rt_sigsuspend (compat_sigset_t *sset, unsigned int sigsetsize, struct sig
        sigset_t oldset, set;
 
        scr->scratch_unat = 0;  /* avoid leaking kernel bits to user level */
-       memset(&set, 0, sizeof(&set));
+       memset(&set, 0, sizeof(set));
 
-       if (memcpy(&set.sig, &sset->sig, sigsetsize))
-               return -EFAULT;
+       memcpy(&set.sig, &sset->sig, sigsetsize);
 
        sigdelsetmask(&set, ~_BLOCKABLE);
 
@@ -778,7 +777,7 @@ restore_sigcontext_ia32 (struct pt_regs *regs, struct sigcontext_ia32 __user *sc
                struct _fpstate * buf;
                err |= __get_user(buf, &sc->fpstate);
                if (buf) {
-                       if (verify_area(VERIFY_READ, buf, sizeof(*buf)))
+                       if (!access_ok(VERIFY_READ, buf, sizeof(*buf)))
                                goto badframe;
                        err |= restore_i387(buf);
                }
@@ -978,7 +977,7 @@ sys32_sigreturn (int arg0, int arg1, int arg2, int arg3, int arg4, int arg5,
        sigset_t set;
        int eax;
 
-       if (verify_area(VERIFY_READ, frame, sizeof(*frame)))
+       if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
                goto badframe;
 
        if (__get_user(set.sig[0], &frame->sc.oldmask)
@@ -1010,7 +1009,7 @@ sys32_rt_sigreturn (int arg0, int arg1, int arg2, int arg3, int arg4,
        sigset_t set;
        int eax;
 
-       if (verify_area(VERIFY_READ, frame, sizeof(*frame)))
+       if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
                goto badframe;
        if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set)))
                goto badframe;