From 724ef83e062ccceda4b7f41ce386850982a4fe8a Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Wed, 30 Jun 2021 23:19:44 +0200 Subject: [PATCH] platform: fix releasing thead-local stack of NMPNetns instances Fixes: 12df49f8ab45 ('platform: make NMPNetns thread-safe') (cherry picked from commit b433c21ae47949329c973c0a58d6df16068bf629) --- src/libnm-platform/nmp-netns.c | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/src/libnm-platform/nmp-netns.c b/src/libnm-platform/nmp-netns.c index aea5b3b6dc..2b28a4cd43 100644 --- a/src/libnm-platform/nmp-netns.c +++ b/src/libnm-platform/nmp-netns.c @@ -11,7 +11,6 @@ #include #include #include -#include #include "libnm-log-core/nm-logging.h" @@ -151,20 +150,13 @@ _netns_stack_get_impl(void) { gs_unref_object NMPNetns *netns = NULL; gs_free_error GError *error = NULL; - pthread_key_t key; GArray * s; s = g_array_new(FALSE, FALSE, sizeof(NetnsInfo)); g_array_set_clear_func(s, _netns_stack_clear_cb); _netns_stack = s; - /* register a destructor function to cleanup the array. If we fail - * to do so, we will leak NMPNetns instances (and their file descriptor) when the - * thread exits. */ - if (pthread_key_create(&key, (void (*)(void *)) g_array_unref) != 0) - _LOGE(NULL, "failure to initialize thread-local storage"); - else if (pthread_setspecific(key, s) != 0) - _LOGE(NULL, "failure to set thread-local storage"); + nm_utils_thread_local_register_destroy(s, (GDestroyNotify) g_array_unref); /* at the bottom of the stack we must try to create a netns instance * that we never pop. It's the base to which we need to return. */