From f4cd75d422eb59ff1c0c478ca5f82e27a022df62 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Tue, 14 Nov 2017 15:32:39 +0100 Subject: [PATCH] platform: preserve errno when creating netns fails (cherry picked from commit 7a98ee78be7179cab576c31bd323f2593234d9a9) --- src/platform/nmp-netns.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/platform/nmp-netns.c b/src/platform/nmp-netns.c index 34215828ce..bc305f0170 100644 --- a/src/platform/nmp-netns.c +++ b/src/platform/nmp-netns.c @@ -290,6 +290,7 @@ _netns_new (GError **error) g_set_error (error, NM_UTILS_ERROR, NM_UTILS_ERROR_UNKNOWN, "Failed opening netns: %s", g_strerror (errsv)); + errno = errsv; return NULL; } @@ -300,6 +301,7 @@ _netns_new (GError **error) "Failed opening mntns: %s", g_strerror (errsv)); nm_close (fd_net); + errno = errsv; return NULL; } @@ -479,6 +481,7 @@ nmp_netns_new (void) if (!_stack_peek ()) { /* there are no netns instances. We cannot create a new one * (because after unshare we couldn't return to the original one). */ + errno = ENOTSUP; return NULL; } @@ -508,6 +511,7 @@ nmp_netns_new (void) self = _netns_new (&error); if (!self) { + errsv = errno; _LOGE (NULL, "failed to create netns after unshare: %s", error->message); g_clear_error (&error); goto err_out; @@ -518,6 +522,7 @@ nmp_netns_new (void) return self; err_out: _netns_switch_pop (NULL, _CLONE_NS_ALL); + errno = errsv; return NULL; }