diff options
| author | Michael Biebl <biebl@debian.org> | 2021-02-18 18:53:54 +0100 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2021-02-18 18:53:54 +0100 |
| commit | 3a56bce6c0ea7ba0fe269520547740783b342e0d (patch) | |
| tree | 9add44a08843f5ea53301716a0e8fde03a6536a7 /shared/nm-platform/nmp-netns.c | |
| parent | 80ec1decc49c72efec2a8b87c06245c92c0ab807 (diff) | |
New upstream version 1.30.0 upstream/1.30.0
Diffstat (limited to 'shared/nm-platform/nmp-netns.c')
| -rw-r--r-- | shared/nm-platform/nmp-netns.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/shared/nm-platform/nmp-netns.c b/shared/nm-platform/nmp-netns.c index c7cb617b..f97339a7 100644 --- a/shared/nm-platform/nmp-netns.c +++ b/shared/nm-platform/nmp-netns.c @@ -158,25 +158,26 @@ _netns_stack_get_impl(void) 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"); + /* 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. */ netns = _netns_new(&error); + if (!netns) { - _LOGE(NULL, "failed to create initial netns: %s", error->message); + _LOGD(NULL, "failed to create initial netns: %s", error->message); return s; } /* we leak this instance inside the stack. */ _stack_push(s, netns, _CLONE_NS_ALL); - /* finally, 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"); - return s; } |