In the netns_switch() function, the original code attempts to unmount the /sys filesystem and mount it again when switching network namespaces. This has been causing issues with the filesystems mounted beneath /sys, particularly /sys/fs/cgroup, which are not being mounted within network namespaces created by ip-netns(8).
To resolve this issue, I have removed the calls to umount2() and mount() related to the /sys filesystem in the function. This change ensures that the /sys hierarchy remains intact within network namespaces, and the reported bug should be resolved. Here is the updated function, which no longer unmounts and mounts /sys: int netns_switch(char *name) { char net_path[PATH_MAX]; int netns; snprintf(net_path, sizeof(net_path), "%s/%s", NETNS_RUN_DIR, name); netns = open(net_path, O_RDONLY | O_CLOEXEC); if (netns < 0) { fprintf(stderr, "Cannot open network namespace \"%s\": %s\n", name, strerror(errno)); return -1; } if (setns(netns, CLONE_NEWNET) < 0) { fprintf(stderr, "setting the network namespace \"%s\" failed: %s\n", name, strerror(errno)); close(netns); return -1; } close(netns); if (unshare(CLONE_NEWNS) < 0) { fprintf(stderr, "unshare failed: %s\n", strerror(errno)); return -1; } /* Don't let any mounts propagate back to the parent */ if (mount("", "/", "none", MS_SLAVE | MS_REC, NULL)) { fprintf(stderr, "\"mount --make-rslave /\" failed: %s\n", strerror(errno)); return -1; } /* Setup bind mounts for config files in /etc */ bind_etc(name); return 0; } This modification should address the bug and maintain the proper mounting of filesystems under /sys within network namespaces. ** Changed in: iproute2 (Ubuntu) Assignee: (unassigned) => Bilal Khan (ibilalkayy) -- You received this bug notification because you are a member of Kernel Packages, which is subscribed to iproute2 in Ubuntu. Matching subscriptions: iproute2 https://bugs.launchpad.net/bugs/1870554 Title: ip-netns(8) unmounts /sys filesystem hierarchy within namespace Status in iproute2 package in Ubuntu: New Bug description: Filesystems ordinarily mounted beneath /sys, particularly /sys/fs/cgroup, are not mounted within network namespaces created by ip-netns(8), as lib/namespace.c:netns_switch() explicitly remounts /sys. The patch enclosed removes the offending calls to umount2(2) and mount(2), leaving the /sys hierarchy intact within network namespaces. $ lsb_release -rd Description: Ubuntu 18.04.4 LTS Release: 18.04 $ apt-cache policy iproute2 iproute2: Installed: 4.15.0-2ubuntu1 Candidate: 4.15.0-2ubuntu1 Version table: *** 4.15.0-2ubuntu1 500 500 http://fr2.archive.ubuntu.com/ubuntu bionic/main amd64 Packages 100 /var/lib/dpkg/status Nota bene: this bug was reported in [1] (unresolved) and, on Arch Linux, [2]. References: [1] https://answers.launchpad.net/ubuntu/+source/iproute2/+question/659146 [2] https://bugs.archlinux.org/task/33328 To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/iproute2/+bug/1870554/+subscriptions -- Mailing list: https://launchpad.net/~kernel-packages Post to : kernel-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~kernel-packages More help : https://help.launchpad.net/ListHelp