SHA256
1
0
forked from pool/lsof
Files
lsof/0002-linux-Maintain-original-output-for-pidfd-in-linux-6..patch
Danilo Spinella 11db4fbcaf Accepting request 1174786 from home:jirislaby:branches:utilities
- replace:
  0002-tests-fix-for-kernel-6.9.patch
  by upstream proposed:
  0002-linux-Maintain-original-output-for-pidfd-in-linux-6..patch

OBS-URL: https://build.opensuse.org/request/show/1174786
OBS-URL: https://build.opensuse.org/package/show/utilities/lsof?expand=0&rev=64
2024-05-17 15:18:39 +00:00

65 lines
2.4 KiB
Diff

From: Jiajie Chen <c@jia.je>
Date: Fri, 17 May 2024 15:22:35 +0800
Subject: [linux] Maintain original output for pidfd in linux 6.9
Git-repo: https://github.com/lsof-org/lsof
Git-commit: c1678e3f6e4b4d984cb3078b7bf0c9e24bedb8ca
Patch-mainline: submitted, https://github.com/lsof-org/lsof/pull/319
References: kernel 6.9
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
00DIST | 3 +++
lib/dialects/linux/dproc.c | 13 +++++++++++++
2 files changed, 16 insertions(+)
diff --git a/00DIST b/00DIST
index e4b9a972..981fb4ef 100644
--- a/00DIST
+++ b/00DIST
@@ -5587,6 +5587,12 @@ Supplement Regenerated the 4.04 distribution to correct a non-
fix 00DIST file <space> -> tabs
+4.9?.? ????????? ??, ????
+
+ [linux] Linux 6.9 changed the pidfs appearence in procfs. Try
+ to maintain original output in lsof (#317)
+
+
Vic Abell <abe@purdue.edu>
July 14, 2018
diff --git a/lib/dialects/linux/dproc.c b/lib/dialects/linux/dproc.c
index cb6bb64f..3a7a1204 100644
--- a/lib/dialects/linux/dproc.c
+++ b/lib/dialects/linux/dproc.c
@@ -1273,6 +1273,10 @@ static int process_id(struct lsof_context *ctx, /* context */
#endif /* defined(HASEPTOPTS) */
if (rest && rest[0] == '[' && rest[1] == 'p')
fdinfo_mask |= FDINFO_PID;
+ else if (Lf->ntype == N_REGLR && rest && *rest && strcmp(pbuf, "pidfd") == 0) {
+ // https://github.com/lsof-org/lsof/issues/317
+ fdinfo_mask |= FDINFO_PID;
+ }
if ((av = get_fdinfo(ctx, pathi, fdinfo_mask, &fi)) &
FDINFO_POS) {
@@ -1338,6 +1342,15 @@ static int process_id(struct lsof_context *ctx, /* context */
Lf->sf |= SELPTYINFO;
}
#endif /* defined(HASEPTOPTS) && defined(HASPTYEPT) */
+ else if (Lf->ntype == N_REGLR && rest && *rest && Lf->nm &&
+ strcmp(Lf->nm, "pidfd") == 0) {
+ // https://github.com/lsof-org/lsof/issues/317
+ // pidfd since Linux 6.9 becomes a regular file:
+ // /proc/PID/fd/FD -> pidfd:[INODE]
+ (void)snpf(rest, sizeof(pbuf) - (rest - pbuf),
+ "[pidfd:%d]", fi.pid);
+ enter_nm(ctx, rest);
+ }
if (Lf->sf)
link_lfile(ctx);
--
2.45.1