From: Lennart Poettering Date: Fri, 8 Nov 2024 22:06:44 +0000 (+0100) Subject: namespace-util: pin pid via pidfd during namespace_open() X-Git-Tag: v257-rc2~24 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=9466fe014f6083825ed819fe17bf98f72baa3af9;p=thirdparty%2Fsystemd.git namespace-util: pin pid via pidfd during namespace_open() --- diff --git a/src/basic/namespace-util.c b/src/basic/namespace-util.c index a80ed32791a..2c61506149f 100644 --- a/src/basic/namespace-util.c +++ b/src/basic/namespace-util.c @@ -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) {