Print this page
8634 epoll fails to wake on certain edge-triggered conditions
8635 epoll should not emit POLLNVAL
8636 recursive epoll should emit EPOLLRDNORM
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Reviewed by: Robert Mustacchi <rm@joyent.com>
Reviewed by: Toomas Soome <tsoome@me.com>
Reviewed by: Igor Kozhukhov <igor@dilos.org>

@@ -18,10 +18,12 @@
  *
  * CDDL HEADER END
  *
  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
+ *
+ * Copyright 2017 Joyent, Inc.
  */
 
 
 /*
  * Random number generator pseudo-driver

@@ -327,11 +329,11 @@
 
                 /*
                  * A non NULL pollhead pointer should be returned in case
                  * user polls for 0 events.
                  */
-                if (*reventsp == 0 && !anyyet)
+                if ((*reventsp == 0 && !anyyet) || (events & POLLET))
                         *phpp = &urnd_pollhd;
 
                 break;
         case DEVRANDOM:
                 kcf_rnd_chpoll(events, anyyet, reventsp, phpp);