diff options
| author | Arjan van de Ven <arjan@linux.intel.com> | 2008-10-06 13:01:53 -0700 | 
|---|---|---|
| committer | Arjan van de Ven <arjan@linux.intel.com> | 2008-10-06 13:01:53 -0700 | 
| commit | 80a4b18d19bf1f7b88a261088c00a0d6b310a722 (patch) | |
| tree | c084c0bffe8e6b685aee009622913fd4bfc00571 /arch/alpha | |
| parent | 2e94d1f71f7e4404d997e6fb4f1618aa147d76f9 (diff) | |
| download | linux-80a4b18d19bf1f7b88a261088c00a0d6b310a722.tar.bz2 | |
select: fix alpha OSF wrapper
... 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>
Diffstat (limited to 'arch/alpha')
| -rw-r--r-- | arch/alpha/kernel/osf_sys.c | 13 | 
1 files changed, 7 insertions, 6 deletions
| diff --git a/arch/alpha/kernel/osf_sys.c b/arch/alpha/kernel/osf_sys.c index 8509dad31204..8e19acbf2886 100644 --- a/arch/alpha/kernel/osf_sys.c +++ b/arch/alpha/kernel/osf_sys.c @@ -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 { |