From: Masatake YAMATO Date: Fri, 7 Jun 2024 19:54:03 +0000 (+0900) Subject: lsns: ignore ESRCH errors reported when accessing files under /proc X-Git-Tag: v2.40.3~50 X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=48e85a37a2ef7023e39d5e14848998a1eab61562;p=thirdparty%2Futil-linux.git lsns: ignore ESRCH errors reported when accessing files under /proc 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 Signed-off-by: Karel Zak --- diff --git a/sys-utils/lsns.c b/sys-utils/lsns.c index 6c87c4745..5e26c2f33 100644 --- a/sys-utils/lsns.c +++ b/sys-utils/lsns.c @@ -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; }