From 348b2d1176e533d31088ed0dbc1200eb7a83ee34 Mon Sep 17 00:00:00 2001 From: Cyrill Gorcunov Date: Fri, 21 Sep 2018 11:41:44 +0300 Subject: [PATCH] tun: Set net ns before opening master 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 Signed-off-by: Andrei Vagin --- criu/tun.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/criu/tun.c b/criu/tun.c index 2e189c69c..e9c18c0ab 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 */