<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">
From: "Bill Rugolsky Jr." &lt;brugolsky@telemetry-investments.com&gt;

This patch cause select() to return EINVAL when passed an un-normalized
timeval usec, and fixes up the range check in preparation for the patch
that follows.



---

 25-akpm/fs/select.c |    4 +---
 1 files changed, 1 insertion(+), 3 deletions(-)

diff -puN fs/select.c~poll-select-range-check-fix fs/select.c
--- 25/fs/select.c~poll-select-range-check-fix	2004-03-12 01:30:21.000000000 -0800
+++ 25-akpm/fs/select.c	2004-03-12 01:30:21.000000000 -0800
@@ -291,8 +291,6 @@ static void select_bits_free(void *bits,
  * Update: ERESTARTSYS breaks at least the xview clock binary, so
  * I'm trying ERESTARTNOHAND which restart only when you want to.
  */
-#define MAX_SELECT_SECONDS \
-	((unsigned long) (MAX_SCHEDULE_TIMEOUT / HZ)-1)
 
 asmlinkage long
 sys_select(int n, fd_set __user *inp, fd_set __user *outp, fd_set __user *exp, struct timeval __user *tvp)
@@ -315,7 +313,7 @@ sys_select(int n, fd_set __user *inp, fd
 		if (sec &lt; 0 || usec &lt; 0)
 			goto out_nofds;
 
-		if ((unsigned long) sec &lt; MAX_SELECT_SECONDS) {
+		if ((unsigned long) sec &lt; (MAX_SCHEDULE_TIMEOUT-1) / HZ - 1) {
 			timeout = ROUND_UP(usec, 1000000/HZ);
 			timeout += sec * (unsigned long) HZ;
 		}

_
</pre></body></html>