From 05393f13338a7b3db5bca8cb5a567f4b40ef675f Mon Sep 17 00:00:00 2001 From: Amaury Couderc Date: Fri, 12 Dec 2025 14:35:54 +0100 Subject: [PATCH] procps: fixed large pid issue with top MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit procps: fixed large pid issue with top top -b -n1 -H -p 92233720368547758071   signal 11 (SEGV) was caught by top, please This patch should be backported to the scarthgap branch once it is merged. Signed-off-by: Amaury Couderc Signed-off-by: Mathieu Dubois-Briand Signed-off-by: Richard Purdie --- .../procps/procps/top_large_pid_fix.patch | 52 +++++++++++++++++++ meta/recipes-extended/procps/procps_4.0.5.bb | 1 + 2 files changed, 53 insertions(+) create mode 100644 meta/recipes-extended/procps/procps/top_large_pid_fix.patch diff --git a/meta/recipes-extended/procps/procps/top_large_pid_fix.patch b/meta/recipes-extended/procps/procps/top_large_pid_fix.patch new file mode 100644 index 00000000000..d7e3141e060 --- /dev/null +++ b/meta/recipes-extended/procps/procps/top_large_pid_fix.patch @@ -0,0 +1,52 @@ +From f21fc624d960d12afa399af7333d4f9193fb2ffb Mon Sep 17 00:00:00 2001 +From: Jim Warner +Date: Tue, 16 Sep 2025 12:00:00 -0500 +Subject: [PATCH] library: avoid possible segmentation fault, api +Upstream-Status: Backport +[https://gitlab.com/procps-ng/procps/-/commit/5461b50b1a85c5e556c4cd2739ca8ffdbc69399a] + +In the issue referenced below, that SEGV was caused by +passing a '-1' pid to the procps_pids_select function. +That value, in turn, is caused by providing a LONG_MAX +or greater number for what was assigned to an integer. + +So, this commit will help ensure we avoid a match when +we should fail plus skip some unproductive libc calls. + +[ the same problem occurs in that old 3.3.17 library ] + +Reference(s): +https://gitlab.com/procps-ng/procps/-/issues/394 + +Signed-off-by: Jim Warner +Signed-off-by: Amaury Couderc + +--- + library/readproc.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/library/readproc.c b/library/readproc.c +index 2dfe4c9e..d0e039bf 100644 +--- a/library/readproc.c ++++ b/library/readproc.c +@@ -1434,7 +1434,7 @@ static int listed_nextpid (PROCTAB *PT, proc_t *p) { + pid_t pid = *(PT->pids)++; + char *path = PT->path; + +- if (pid) { ++ if (pid > 0) { + snprintf(path, PROCPATHLEN, "/proc/%d", pid); + p->tid = p->tgid = pid; // this tgid may be a huge fib | + +@@ -1546,7 +1546,7 @@ PROCTAB *openproc(unsigned flags, ...) { + did_stat = 1; + } + PT->taskdir = NULL; +- PT->taskdir_user = -1; ++ PT->taskdir_user = -2; + PT->taskfinder = simple_nexttid; + PT->taskreader = simple_readtask; + +-- +2.43.0 + diff --git a/meta/recipes-extended/procps/procps_4.0.5.bb b/meta/recipes-extended/procps/procps_4.0.5.bb index d568cc831e4..0e0e06f0d28 100644 --- a/meta/recipes-extended/procps/procps_4.0.5.bb +++ b/meta/recipes-extended/procps/procps_4.0.5.bb @@ -14,6 +14,7 @@ inherit autotools gettext pkgconfig update-alternatives SRC_URI = "git://gitlab.com/procps-ng/procps.git;protocol=https;branch=master;tag=v${PV} \ file://sysctl.conf \ + file://top_large_pid_fix.patch \ " SRCREV = "f46b2f7929cdfe2913ed0a7f585b09d6adbf994e" -- 2.47.3