vserver 2.0 rc7
[linux-2.6.git] / arch / alpha / kernel / osf_sys.c
index dcad8d3..167fd89 100644 (file)
@@ -437,11 +437,10 @@ asmlinkage int
 osf_getdomainname(char __user *name, int namelen)
 {
        unsigned len;
-       int i, error;
+       int i;
 
-       error = verify_area(VERIFY_WRITE, name, namelen);
-       if (error)
-               goto out;
+       if (!access_ok(VERIFY_WRITE, name, namelen))
+               return -EFAULT;
 
        len = namelen;
        if (namelen > 32)
@@ -454,26 +453,10 @@ osf_getdomainname(char __user *name, int namelen)
                        break;
        }
        up_read(&uts_sem);
- out:
-       return error;
-}
-
-asmlinkage long
-osf_shmat(int shmid, void __user *shmaddr, int shmflg)
-{
-       unsigned long raddr;
-       long err;
 
-       err = do_shmat(shmid, shmaddr, shmflg, &raddr);
-
-       /*
-        * This works because all user-level addresses are
-        * non-negative longs!
-        */
-       return err ? err : (long)raddr;
+       return 0;
 }
 
-
 /*
  * The following stuff should move into a header file should it ever
  * be labeled "officially supported."  Right now, there is just enough
@@ -990,18 +973,19 @@ osf_select(int n, fd_set __user *inp, fd_set __user *outp, fd_set __user *exp,
        char *bits;
        size_t size;
        long timeout;
-       int ret;
+       int ret = -EINVAL;
 
        timeout = MAX_SCHEDULE_TIMEOUT;
        if (tvp) {
                time_t sec, usec;
 
-               if ((ret = verify_area(VERIFY_READ, tvp, sizeof(*tvp)))
-                   || (ret = __get_user(sec, &tvp->tv_sec))
-                   || (ret = __get_user(usec, &tvp->tv_usec)))
+               if (!access_ok(VERIFY_READ, tvp, sizeof(*tvp))
+                   || __get_user(sec, &tvp->tv_sec)
+                   || __get_user(usec, &tvp->tv_usec)) {
+                       ret = -EFAULT;
                        goto out_nofds;
+               }
 
-               ret = -EINVAL;
                if (sec < 0 || usec < 0)
                        goto out_nofds;
 
@@ -1011,7 +995,6 @@ osf_select(int n, fd_set __user *inp, fd_set __user *outp, fd_set __user *exp,
                }
        }
 
-       ret = -EINVAL;
        if (n < 0 || n > current->files->max_fdset)
                goto out_nofds;
 
@@ -1167,16 +1150,13 @@ osf_usleep_thread(struct timeval32 __user *sleep, struct timeval32 __user *remai
        if (get_tv32(&tmp, sleep))
                goto fault;
 
-       ticks = tmp.tv_usec;
-       ticks = (ticks + (1000000 / HZ) - 1) / (1000000 / HZ);
-       ticks += tmp.tv_sec * HZ;
+       ticks = timeval_to_jiffies(&tmp);
 
        current->state = TASK_INTERRUPTIBLE;
        ticks = schedule_timeout(ticks);
 
        if (remain) {
-               tmp.tv_sec = ticks / HZ;
-               tmp.tv_usec = ticks % HZ;
+               jiffies_to_timeval(ticks, &tmp);
                if (put_tv32(remain, &tmp))
                        goto fault;
        }