]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
cgroup-util: Don't try to open pidfd for kernel threads 33885/head
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Wed, 31 Jul 2024 11:38:50 +0000 (13:38 +0200)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Wed, 31 Jul 2024 11:50:16 +0000 (13:50 +0200)
The kernel might start returning -EINVAL when trying to open pidfd's
for kernel threads so let's not try to open pidfd's for kernel threads.

src/basic/cgroup-util.c

index c2150c00c6b406d1edb827461690454403eacfdb..ffce7504f4e5ec1aa69956fc90ec75a40a29a68d 100644 (file)
@@ -149,7 +149,9 @@ int cg_read_pidref(FILE *f, PidRef *ret, CGroupFlags flags) {
                 if (pid == 0)
                         return -EREMOTE;
 
-                if (FLAGS_SET(flags, CGROUP_NO_PIDFD)) {
+                /* We might read kernel thread pids from cgroup.procs for which we cannot create a pidfd so
+                 * catch those and don't try to create a pidfd for them. */
+                if (FLAGS_SET(flags, CGROUP_NO_PIDFD) || pid_is_kernel_thread(pid) > 0) {
                         *ret = PIDREF_MAKE_FROM_PID(pid);
                         return 1;
                 }