diff options
Diffstat (limited to 'usr/src/uts/common/io/signalfd.c')
| -rw-r--r-- | usr/src/uts/common/io/signalfd.c | 10 | 
1 files changed, 7 insertions, 3 deletions
| diff --git a/usr/src/uts/common/io/signalfd.c b/usr/src/uts/common/io/signalfd.c index 883c81d2ce..2a1cf25917 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.   */  /* @@ -107,6 +107,7 @@  #include <sys/schedctl.h>  #include <sys/id_space.h>  #include <sys/sdt.h> +#include <sys/brand.h>  #include <sys/disp.h>  #include <sys/taskq_impl.h> @@ -459,6 +460,9 @@ consume_signal(k_sigset_t set, uio_t *uio, boolean_t block)  	lwp->lwp_extsig = 0;  	mutex_exit(&p->p_lock); +	if (PROC_IS_BRANDED(p) && BROP(p)->b_sigfd_translate) +		BROP(p)->b_sigfd_translate(infop); +  	/* Convert k_siginfo into external, datamodel independent, struct. */  	bzero(ssp, sizeof (*ssp));  	ssp->ssi_signo = infop->si_signo; @@ -560,7 +564,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 +584,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; | 
