From: Witold Krecicki Date: Fri, 26 Oct 2018 12:22:02 +0000 (+0200) Subject: Don't doublelock fdlock on Solaris X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=eb4a5badad95a014c893b517b43588cf3b27ba36;p=thirdparty%2Fbind9.git Don't doublelock fdlock on Solaris --- diff --git a/lib/isc/unix/socket.c b/lib/isc/unix/socket.c index 7e355ba848d..163ddac1ed7 100644 --- a/lib/isc/unix/socket.c +++ b/lib/isc/unix/socket.c @@ -736,7 +736,6 @@ watch_fd(isc__socketthread_t *thread, int fd, int msg) { pfd.events = POLLOUT; pfd.fd = fd; pfd.revents = 0; - LOCK(&thread->fdlock[lockid]); if (write(thread->devpoll_fd, &pfd, sizeof(pfd)) == -1) result = isc__errno2result(errno); else { @@ -745,7 +744,6 @@ watch_fd(isc__socketthread_t *thread, int fd, int msg) { else thread->fdpollinfo[fd].want_write = 1; } - UNLOCK(&thread->fdlock[lockid]); return (result); #elif defined(USE_SELECT) @@ -817,7 +815,6 @@ unwatch_fd(isc__socketthread_t *thread, int fd, int msg) { * only provides a way of canceling per FD, we may need to re-poll the * socket for the other operation. */ - LOCK(&thread->fdlock[lockid]); if (msg == SELECT_POKE_READ && thread->fdpollinfo[fd].want_write == 1) { pfds[1].events = POLLOUT; @@ -839,7 +836,6 @@ unwatch_fd(isc__socketthread_t *thread, int fd, int msg) { else thread->fdpollinfo[fd].want_write = 0; } - UNLOCK(&thread->fdlock[lockid]); return (result); #elif defined(USE_SELECT) @@ -3127,7 +3123,6 @@ internal_recv(isc__socket_t *sock) { dev = ISC_LIST_HEAD(sock->recv_list); if (dev == NULL) { goto finish; - return; } socket_log(sock, NULL, IOEVENT,