summary refs log tree commit diff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2008-01-09 21:52:40 +0000
committerUlrich Drepper <drepper@redhat.com>2008-01-09 21:52:40 +0000
commitf6bacb8ef4dfcee39864d6383e3660d8ac267d23 (patch)
tree44358c8479ad58985dd4270f7a7910c58d62e742
parentaa693c68be9fc19b88bef6806c77b8b4afa7a438 (diff)
downloadglibc-f6bacb8ef4dfcee39864d6383e3660d8ac267d23.tar.gz
glibc-f6bacb8ef4dfcee39864d6383e3660d8ac267d23.tar.xz
glibc-f6bacb8ef4dfcee39864d6383e3660d8ac267d23.zip
[BZ #5541]
	* sunrpc/rpc_thread.c (__rpc_thread_destroy): Also free xports and
	pollfd structures.
	Patch by André Cruz.
-rw-r--r--ChangeLog5
-rw-r--r--malloc/malloc.c3
-rw-r--r--sunrpc/rpc_thread.c2
3 files changed, 9 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index eb842b907b..d70e40a72d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2008-01-09  Ulrich Drepper  <drepper@redhat.com>
 
+	[BZ #5541]
+	* sunrpc/rpc_thread.c (__rpc_thread_destroy): Also free xports and
+	pollfd structures.
+	Patch by André Cruz.
+
 	[BZ #5545]
 	* sunrpc/clnt_perr.c (clnt_sperror): Don't use fixed size buffer.
 	(clnt_spcreateerror): Likewise.
diff --git a/malloc/malloc.c b/malloc/malloc.c
index f0425bddf5..17dd0a9c96 100644
--- a/malloc/malloc.c
+++ b/malloc/malloc.c
@@ -3772,8 +3772,9 @@ public_mEMALIGn(size_t alignment, size_t bytes)
     } else {
 #if USE_ARENAS
       /* ... or sbrk() has failed and there is still a chance to mmap() */
-      ar_ptr = arena_get2(ar_ptr->next ? ar_ptr : 0, bytes);
+      mstate prev = ar_ptr->next ? ar_ptr : 0;
       (void)mutex_unlock(&ar_ptr->mutex);
+      ar_ptr = arena_get2(prev, bytes);
       if(ar_ptr) {
         p = _int_memalign(ar_ptr, alignment, bytes);
         (void)mutex_unlock(&ar_ptr->mutex);
diff --git a/sunrpc/rpc_thread.c b/sunrpc/rpc_thread.c
index 91e94c2eab..7a9cc9d62f 100644
--- a/sunrpc/rpc_thread.c
+++ b/sunrpc/rpc_thread.c
@@ -29,6 +29,8 @@ __rpc_thread_destroy (void)
 		free (tvp->svcraw_private_s);
 		free (tvp->authdes_cache_s);
 		free (tvp->authdes_lru_s);
+		free (tvp->svc_xports_s);
+		free (tvp->svc_pollfd_s);
 		if (tvp != &__libc_tsd_RPC_VARS_mem)
 			free (tvp);
 		__libc_tsd_set (RPC_VARS, NULL);