aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAnoop C S <anoopcs@redhat.com>2017-02-10 21:38:11 +0530
committerMichael Adam <obnox@samba.org>2017-02-10 18:31:24 +0100
commit5af15532cefecb5665736f30e00960c17700d1b0 (patch)
tree16151fcfddba120c47569d39837e4851ee66ed83 /src
parent888a62e2c81370ab32e9bc790f12419148bd8972 (diff)
downloadsocket_wrapper-5af15532cefecb5665736f30e00960c17700d1b0.tar.gz
socket_wrapper-5af15532cefecb5665736f30e00960c17700d1b0.tar.xz
socket_wrapper-5af15532cefecb5665736f30e00960c17700d1b0.zip
Avoid mutex lock wait in socket close failure
In case of absence to close a socket fd during an exit from application we try to close the same by traversing the socket_fds in swrap_destructor. But the early lock taken on libc_symbol_binding_mutex inside the destructor blocks the subsequent request for locking the same while loading libc_close within swrap_close. Also added a test case to verify this flaw in destructor. Signed-off-by: Anoop C S <anoopcs@redhat.com> Reviewed-by: Andreas Schneider <asn@samba.org> Reviewed-by: Michael Adam <obnox@samba.org>
Diffstat (limited to 'src')
-rw-r--r--src/socket_wrapper.c4
1 files changed, 0 insertions, 4 deletions
diff --git a/src/socket_wrapper.c b/src/socket_wrapper.c
index 186b696..3d468c3 100644
--- a/src/socket_wrapper.c
+++ b/src/socket_wrapper.c
@@ -5656,8 +5656,6 @@ void swrap_destructor(void)
{
struct socket_info_fd *s = socket_fds;
- SWRAP_LOCK_ALL;
-
while (s != NULL) {
swrap_close(s->fd);
s = socket_fds;
@@ -5671,6 +5669,4 @@ void swrap_destructor(void)
if (swrap.libc.socket_handle) {
dlclose(swrap.libc.socket_handle);
}
-
- SWRAP_UNLOCK_ALL;
}