select: fix alpha OSF wrapper
authorArjan van de Ven <arjan@linux.intel.com>
Mon, 6 Oct 2008 20:01:53 +0000 (13:01 -0700)
committerArjan van de Ven <arjan@linux.intel.com>
Mon, 6 Oct 2008 20:01:53 +0000 (13:01 -0700)
... alpha calls the core select code from inside it's architecture
code for emulating OSF; this patch makes it compile again

Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
arch/alpha/kernel/osf_sys.c

index 8509dad..8e19acb 100644 (file)
@@ -986,10 +986,12 @@ asmlinkage int
 osf_select(int n, fd_set __user *inp, fd_set __user *outp, fd_set __user *exp,
           struct timeval32 __user *tvp)
 {
-       s64 timeout = MAX_SCHEDULE_TIMEOUT;
+       struct timespec end_time, *to = NULL;
        if (tvp) {
                time_t sec, usec;
 
+               to = &end_time;
+
                if (!access_ok(VERIFY_READ, tvp, sizeof(*tvp))
                    || __get_user(sec, &tvp->tv_sec)
                    || __get_user(usec, &tvp->tv_usec)) {
@@ -999,14 +1001,13 @@ osf_select(int n, fd_set __user *inp, fd_set __user *outp, fd_set __user *exp,
                if (sec < 0 || usec < 0)
                        return -EINVAL;
 
-               if ((unsigned long) sec < MAX_SELECT_SECONDS) {
-                       timeout = (usec + 1000000/HZ - 1) / (1000000/HZ);
-                       timeout += sec * (unsigned long) HZ;
-               }
+               if (poll_select_set_timeout(to, sec, usec * NSEC_PER_USEC))
+                       return -EINVAL;         
+
        }
 
        /* OSF does not copy back the remaining time.  */
-       return core_sys_select(n, inp, outp, exp, &timeout);
+       return core_sys_select(n, inp, outp, exp, to);
 }
 
 struct rusage32 {