*** select.orig.c Thu Jun 21 08:52:04 2001 --- select.c Thu Jun 21 12:09:25 2001 *************** *** 164,171 **** --- 164,172 ---- { poll_table table, *wait; int retval, i, off; long __timeout = *timeout; + unsigned long bits; read_lock(¤t->files->file_lock); retval = max_select_fd(n, fds); read_unlock(¤t->files->file_lock); *************** *** 186,194 **** unsigned long mask; struct file *file; off = i / __NFDBITS; ! if (!(bit & BITS(fds, off))) continue; file = fget(i); mask = POLLNVAL; if (file) { --- 187,202 ---- unsigned long mask; struct file *file; off = i / __NFDBITS; ! if (!(i & (__NFDBITS - 1))) { ! bits = BITS(fds, off); ! if (!bits) { ! i += __NFDBITS; ! continue; ! } ! } ! if (!(bit & bits)) continue; file = fget(i); mask = POLLNVAL; if (file) {