[CRIU] [PATCH 2/3] tun: Set net ns before opening master

Cyrill Gorcunov gorcunov at gmail.com
Fri Sep 21 11:41:44 MSK 2018


Opening tun device is tricky: the net device
is allocated from current net namespace, thus
we should set it first, otherwise all tuns
which live in nested net namespace get moved
to the toplevel one.

Signed-off-by: Cyrill Gorcunov <gorcunov at gmail.com>
---
 criu/tun.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/criu/tun.c b/criu/tun.c
index 2e189c69c8ac..e9c18c0abbe2 100644
--- a/criu/tun.c
+++ b/criu/tun.c
@@ -369,13 +369,14 @@ static int tunfile_open(struct file_desc *d, int *new_fd)
 	struct tun_link *tl;
 
 	ti = container_of(d, struct tunfile_info, d);
-	fd = open_reg_by_id(ti->tfe->id);
-	if (fd < 0)
-		return -1;
 
 	ns_id = ti->tfe->ns_id;
 	if (set_netns(ns_id))
-		goto err;
+		return -1;
+
+	fd = open_reg_by_id(ti->tfe->id);
+	if (fd < 0)
+		return -1;
 
 	if (!ti->tfe->netdev)
 		/* just-opened tun file */
-- 
2.17.1



More information about the CRIU mailing list