summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/io/signalfd.c
diff options
context:
space:
mode:
authorPatrick Mooney <pmooney@pfmooney.com>2017-09-22 23:43:19 +0000
committerDan McDonald <danmcd@joyent.com>2017-10-18 22:47:16 -0400
commit80d5689f5d4588adc071138e25e9d0d5252d9b55 (patch)
treecc01d70fa3d12753675ad425a28ef50a12078dbf /usr/src/uts/common/io/signalfd.c
parentad3ad82ad2fb99c424a8482bd1908d08b990ccea (diff)
downloadillumos-joyent-80d5689f5d4588adc071138e25e9d0d5252d9b55.tar.gz
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> Approved by: Dan McDonald <danmcd@joyent.com>
Diffstat (limited to 'usr/src/uts/common/io/signalfd.c')
-rw-r--r--usr/src/uts/common/io/signalfd.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/usr/src/uts/common/io/signalfd.c b/usr/src/uts/common/io/signalfd.c
index 883c81d2ce..6416d6d45a 100644
--- a/usr/src/uts/common/io/signalfd.c
+++ b/usr/src/uts/common/io/signalfd.c
@@ -10,7 +10,7 @@
*/
/*
- * Copyright 2016 Joyent, Inc.
+ * Copyright 2017 Joyent, Inc.
*/
/*
@@ -560,7 +560,6 @@ signalfd_sig_pending(proc_t *p, kthread_t *t, k_sigset_t set)
set.__sigbits[2]) & FILLSET2));
}
-_NOTE(ARGSUSED(4))
static int
signalfd_poll(dev_t dev, short events, int anyyet, short *reventsp,
struct pollhead **phpp)
@@ -581,7 +580,8 @@ signalfd_poll(dev_t dev, short events, int anyyet, short *reventsp,
mutex_exit(&state->sfd_lock);
- if (!(*reventsp = revents & events) && !anyyet) {
+ *reventsp = revents & events;
+ if ((*reventsp == 0 && !anyyet) || (events & POLLET)) {
sigfd_proc_state_t *pstate;
sigfd_poll_waiter_t *pw;