kernel - Add ts check to dotimeout_only()
authorMatthew Dillon <dillon@apollo.backplane.com>
Sat, 19 Nov 2011 17:41:48 +0000 (09:41 -0800)
committerMatthew Dillon <dillon@apollo.backplane.com>
Sat, 19 Nov 2011 17:41:48 +0000 (09:41 -0800)
* We have to add a null-check before calling dotimeout_only().  When
  poll()/select() are called with a NULL timeout that means wait forever
  and does not mean a fixed delay.

Reported-by: YONETANI Tomokazu <y0n3t4n1@gmail.com>
sys/kern/sys_generic.c

index 9e46223..0555036 100644 (file)
@@ -1141,7 +1141,7 @@ doselect(int nd, fd_set *read, fd_set *write, fd_set *except,
        *res = 0;
        if (nd < 0)
                return (EINVAL);
-       if (nd == 0)
+       if (nd == 0 && ts)
                return (dotimeout_only(ts));
 
        if (nd > p->p_fd->fd_nfiles)            /* limit kmalloc */
@@ -1462,7 +1462,7 @@ dopoll(int nfds, struct pollfd *fds, struct timespec *ts, int *res)
         if (nfds < 0)
                 return (EINVAL);
 
-       if (nfds == 0)
+       if (nfds == 0 && ts)
                return (dotimeout_only(ts));
 
        /*