mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-01-05 03:20:18 +01:00
platform: reorder code in _netns_stack_get_impl()
We should always register the GArray stack with pthread
for cleanup the thread local storage. Do that first, before
creating the NMPNetns instance at the bottom of the stack.
(cherry picked from commit f9636080ac)
This commit is contained in:
parent
4113e93b3b
commit
f6c07c39e4
1 changed files with 9 additions and 8 deletions
|
|
@ -158,9 +158,18 @@ _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);
|
||||
return s;
|
||||
|
|
@ -169,14 +178,6 @@ _netns_stack_get_impl(void)
|
|||
/* 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;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue