{
        int oldval = 0, ret;
 
-       if (!access_ok(uaddr, sizeof(u32)))
+       if (!user_access_begin(uaddr, sizeof(u32)))
                return -EFAULT;
-       allow_read_write_user(uaddr, uaddr, sizeof(*uaddr));
 
        switch (op) {
        case FUTEX_OP_SET:
        default:
                ret = -ENOSYS;
        }
+       user_access_end();
 
        *oval = oldval;
 
-       prevent_read_write_user(uaddr, uaddr, sizeof(*uaddr));
        return ret;
 }
 
        int ret = 0;
        u32 prev;
 
-       if (!access_ok(uaddr, sizeof(u32)))
+       if (!user_access_begin(uaddr, sizeof(u32)))
                return -EFAULT;
 
-       allow_read_write_user(uaddr, uaddr, sizeof(*uaddr));
-
         __asm__ __volatile__ (
         PPC_ATOMIC_ENTRY_BARRIER
 "1:     lwarx   %1,0,%3         # futex_atomic_cmpxchg_inatomic\n\
         : "r" (uaddr), "r" (oldval), "r" (newval), "i" (-EFAULT)
         : "cc", "memory");
 
+       user_access_end();
+
        *uval = prev;
-       prevent_read_write_user(uaddr, uaddr, sizeof(*uaddr));
 
         return ret;
 }