diff options
Diffstat (limited to 'linuxthreads/cancel.c')
-rw-r--r-- | linuxthreads/cancel.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/linuxthreads/cancel.c b/linuxthreads/cancel.c index b05d8bf66e..0ae0d12887 100644 --- a/linuxthreads/cancel.c +++ b/linuxthreads/cancel.c @@ -15,6 +15,7 @@ /* Thread cancellation */ #include <errno.h> +#include <rpc/rpc.h> #include "pthread.h" #include "internals.h" #include "spinlock.h" @@ -163,6 +164,10 @@ void __pthread_perform_cleanup(void) struct _pthread_cleanup_buffer * c; for (c = THREAD_GETMEM(self, p_cleanup); c != NULL; c = c->__prev) c->__routine(c->__arg); + + /* And the TSD which needs special help. */ + if (THREAD_GETMEM(self, p_libc_specific[_LIBC_TSD_KEY_RPC_VARS]) != NULL) + __rpc_thread_destroy (); } #ifndef SHARED |