]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
lsns: ignore ESRCH errors reported when accessing files under /proc
authorMasatake YAMATO <yamato@redhat.com>
Fri, 7 Jun 2024 19:54:03 +0000 (04:54 +0900)
committerKarel Zak <kzak@redhat.com>
Tue, 10 Dec 2024 11:33:26 +0000 (12:33 +0100)
Fix #2799.

If a process is gone, system calls accessing files under /proc can
return ESRCH.

[kzak@redhat.com: - backport to stable/v2.40]

Suggested by Johannes Edmeier (@joshiste).
Signed-off-by: Masatake YAMATO <yamato@redhat.com>
Signed-off-by: Karel Zak <kzak@redhat.com>
sys-utils/lsns.c

index 6c87c47455c94443b7c2e0e61f11308320e6296a..5e26c2f33a742cbef0a2ef31c5d537f50a329dc2 100644 (file)
@@ -553,8 +553,10 @@ static int read_process(struct lsns *ls, pid_t pid)
 
                rc = get_ns_ino(dirfd(dir), ns_names[i], &p->ns_ids[i],
                                &p->ns_pids[i], &p->ns_oids[i]);
-               if (rc && rc != -EACCES && rc != -ENOENT)
+               if (rc && rc != -EACCES && rc != -ENOENT && rc != ESRCH) {
+                       DBG(PROC, ul_debug("failed in get_ns_inos (rc: %d)", rc));
                        goto done;
+               }
                if (i == LSNS_ID_NET)
                        p->netnsid = get_netnsid(dirfd(dir), p->ns_ids[i]);
                rc = 0;
@@ -595,7 +597,10 @@ static int read_processes(struct lsns *ls)
                 */
                rc = read_process(ls, pid);
                if (rc && rc != -EACCES && rc != -ENOENT)
+               if (rc && rc != -EACCES && rc != -ENOENT && rc != ESRCH) {
+                       DBG(PROC, ul_debug("failed in read_process() (pid: %d, rc: %d)", (int) pid, rc));
                        break;
+               }
                rc = 0;
        }