]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
namespace-util: pin pid via pidfd during namespace_open()
authorLennart Poettering <lennart@poettering.net>
Fri, 8 Nov 2024 22:06:44 +0000 (23:06 +0100)
committerLuca Boccassi <luca.boccassi@gmail.com>
Wed, 13 Nov 2024 14:18:05 +0000 (14:18 +0000)
src/basic/namespace-util.c

index a80ed32791a4f6d4dc875587eae415132c588b0e..2c61506149f9b29e29f4109595f212db480003eb 100644 (file)
@@ -136,12 +136,14 @@ int namespace_open(
                 int *ret_userns_fd,
                 int *ret_root_fd) {
 
-        assert(pid >= 0);
+        _cleanup_(pidref_done) PidRef pidref = PIDREF_NULL;
+        int r;
 
-        if (pid == 0)
-                pid = getpid_cached();
+        r = pidref_set_pid(&pidref, pid);
+        if (r < 0)
+                return r;
 
-        return pidref_namespace_open(&PIDREF_MAKE_FROM_PID(pid), ret_pidns_fd, ret_mntns_fd, ret_netns_fd, ret_userns_fd, ret_root_fd);
+        return pidref_namespace_open(&pidref, ret_pidns_fd, ret_mntns_fd, ret_netns_fd, ret_userns_fd, ret_root_fd);
 }
 
 int namespace_enter(int pidns_fd, int mntns_fd, int netns_fd, int userns_fd, int root_fd) {