Print this page
@@ -673,22 +673,10 @@
uiosize = uiop->uio_resid;
pollfdnum = uiosize / size;
/*
- * For epoll-enabled handles, restrict the allowed write size to 2.
- * This corresponds to an epoll_ctl(3C) performing an EPOLL_CTL_MOD
- * operation which is expanded into two operations (DEL and ADD).
- *
- * All other operations performed through epoll_ctl(3C) will consist of
- * a single entry.
- */
- if (is_epoll && pollfdnum > 2) {
- return (EINVAL);
- }
-
- /*
* We want to make sure that pollfdnum isn't large enough to DoS us,
* but we also don't want to grab p_lock unnecessarily -- so we
* perform the full check against our resource limits if and only if
* pollfdnum is larger than the known-to-be-sane value of UINT8_MAX.
*/
@@ -743,25 +731,10 @@
mutex_enter(&dpep->dpe_lock);
dpep->dpe_writerwait++;
while ((dpep->dpe_flag & DP_WRITER_PRESENT) != 0) {
ASSERT(dpep->dpe_refcnt != 0);
- /*
- * The epoll API does not allow EINTR as a result when making
- * modifications to the set of polled fds. Given that write
- * activity is relatively quick and the size of accepted writes
- * is limited above to two entries, a signal-ignorant wait is
- * used here to avoid the EINTR.
- */
- if (is_epoll) {
- cv_wait(&dpep->dpe_cv, &dpep->dpe_lock);
- continue;
- }
-
- /*
- * Non-epoll writers to /dev/poll handles can tolerate EINTR.
- */
if (!cv_wait_sig_swap(&dpep->dpe_cv, &dpep->dpe_lock)) {
dpep->dpe_writerwait--;
mutex_exit(&dpep->dpe_lock);
kmem_free(pollfdp, uiosize);
return (EINTR);