Sync from SUSE:SLFO:Main util-linux revision 7c885752fe11ba59bb81e4003a65a02a

This commit is contained in:
Adrian Schröter 2024-10-03 18:04:10 +02:00
parent fbb8ad044b
commit 8d659317ac
6 changed files with 718 additions and 15 deletions

View File

@ -0,0 +1,32 @@
From: Xi Ruoyao <xry111@xry111.site>
Date: Sun, 31 Mar 2024 00:42:03 +0800
Subject: include: Include <unistd.h> in pidfd-utils.h for syscall()
Git-repo: https://github.com/util-linux/util-linux.git
Git-commit: 10add327c608b11b3d70215048aade4d1797b1fd
Patch-mainline: yes
References: kernel 6.9
In Glibc, <sys/syscall.h> only contains SYS_* macros and the syscall()
function is in <unistd.h>. So include it.
Signed-off-by: Xi Ruoyao <xry111@xry111.site>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
include/pidfd-utils.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/include/pidfd-utils.h b/include/pidfd-utils.h
index ff0bc4c7..0ee55f3b 100644
--- a/include/pidfd-utils.h
+++ b/include/pidfd-utils.h
@@ -7,6 +7,7 @@
#ifdef HAVE_SYS_SYSCALL_H
# include <sys/syscall.h>
+# include <unistd.h>
/*
* If the kernel headers are too old to provide the syscall numbers, let's
--
2.45.0

View File

@ -0,0 +1,319 @@
From: Xi Ruoyao <xry111@xry111.site>
Date: Wed, 3 Apr 2024 15:29:34 +0800
Subject: lsfd: Refactor the pidfd logic into lsfd-pidfd.c
Git-repo: https://github.com/util-linux/util-linux.git
Git-commit: bf6645dc1edef09ad378cc5b9eb2c93861408735
Patch-mainline: yes
References: kernel 6.9
We'll reuse these logic for pidfd support on Linux >= 6.9. This should
be a no-functional change.
Besides moving the code, this change also renames anon_pidfd_data to
pidfd_data, and removes a redundant nullity check for free (because
free(NULL) will just do nothing per the C standard).
Signed-off-by: Xi Ruoyao <xry111@xry111.site>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
misc-utils/Makemodule.am | 4 +-
misc-utils/lsfd-pidfd.c | 95 ++++++++++++++++++++++++++++++++++++++++
misc-utils/lsfd-pidfd.h | 37 ++++++++++++++++
misc-utils/lsfd-unkn.c | 71 +++++-------------------------
misc-utils/meson.build | 1 +
5 files changed, 147 insertions(+), 61 deletions(-)
create mode 100644 misc-utils/lsfd-pidfd.c
create mode 100644 misc-utils/lsfd-pidfd.h
diff --git a/misc-utils/Makemodule.am b/misc-utils/Makemodule.am
index 9edf3d98..7622a5d7 100644
--- a/misc-utils/Makemodule.am
+++ b/misc-utils/Makemodule.am
@@ -298,7 +298,9 @@ lsfd_SOURCES = \
misc-utils/lsfd-sock.h \
misc-utils/lsfd-sock-xinfo.c \
misc-utils/lsfd-unkn.c \
- misc-utils/lsfd-fifo.c
+ misc-utils/lsfd-fifo.c \
+ misc-utils/lsfd-pidfd.h \
+ misc-utils/lsfd-pidfd.c
lsfd_LDADD = $(LDADD) $(MQ_LIBS) libsmartcols.la libcommon.la
lsfd_CFLAGS = $(AM_CFLAGS) -I$(ul_libsmartcols_incdir)
endif
diff --git a/misc-utils/lsfd-pidfd.c b/misc-utils/lsfd-pidfd.c
new file mode 100644
index 00000000..430a8028
--- /dev/null
+++ b/misc-utils/lsfd-pidfd.c
@@ -0,0 +1,95 @@
+/*
+ * lsfd-pidfd.c - handle pidfd (from anon_inode or pidfs)
+ *
+ * Copyright (C) 2024 Xi Ruoyao <xry111@xry111.site>
+ *
+ * Refactored and moved out from lsfd-unkn.c (originally authored by
+ * Masatake YAMATO <yamato@redhat.com>).
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it would be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include <string.h>
+
+#include "strutils.h"
+#include "xalloc.h"
+
+#include "lsfd.h"
+#include "lsfd-pidfd.h"
+
+int pidfd_handle_fdinfo(struct pidfd_data *data, const char *key,
+ const char *value)
+{
+ if (strcmp(key, "Pid") == 0) {
+ uint64_t pid;
+ int rc = ul_strtou64(value, &pid, 10);
+
+ if (rc < 0)
+ return 0; /* ignore -- parse failed */
+
+ data->pid = (pid_t)pid;
+ return 1;
+ } else if (strcmp(key, "NSpid") == 0) {
+ data->nspid = xstrdup(value);
+ return 1;
+ }
+
+ return 0;
+}
+
+char *pidfd_get_name(struct pidfd_data *data)
+{
+ char *str = NULL;
+ char *comm = NULL;
+ struct proc *proc = get_proc(data->pid);
+
+ if (proc)
+ comm = proc->command;
+
+ xasprintf(&str, "pid=%d comm=%s nspid=%s",
+ data->pid,
+ comm ? comm : "",
+ data->nspid ? data->nspid : "");
+ return str;
+}
+
+bool pidfd_fill_column(struct pidfd_data *data, int column_id, char **str)
+{
+ switch(column_id) {
+ case COL_PIDFD_COMM: {
+ struct proc *pidfd_proc = get_proc(data->pid);
+ char *pidfd_comm = NULL;
+
+ if (pidfd_proc)
+ pidfd_comm = pidfd_proc->command;
+ if (pidfd_comm) {
+ *str = xstrdup(pidfd_comm);
+ return true;
+ }
+ break;
+ }
+ case COL_PIDFD_NSPID:
+ if (data->nspid) {
+ *str = xstrdup(data->nspid);
+ return true;
+ }
+ break;
+ case COL_PIDFD_PID:
+ xasprintf(str, "%d", (int)data->pid);
+ return true;
+ }
+
+ return false;
+}
diff --git a/misc-utils/lsfd-pidfd.h b/misc-utils/lsfd-pidfd.h
new file mode 100644
index 00000000..2f65d3b3
--- /dev/null
+++ b/misc-utils/lsfd-pidfd.h
@@ -0,0 +1,37 @@
+/*
+ * lsfd-pidfd.h - handle pidfd (from anon_inode or pidfs)
+ *
+ * Copyright (C) 2024 Xi Ruoyao <xry111@xry111.site>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it would be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include <stdbool.h>
+#include <sys/types.h>
+
+struct pidfd_data {
+ pid_t pid;
+ char *nspid;
+};
+
+int pidfd_handle_fdinfo(struct pidfd_data *, const char *, const char *);
+char *pidfd_get_name(struct pidfd_data *);
+bool pidfd_fill_column(struct pidfd_data *, int, char **);
+
+static inline void __attribute__((nonnull(1)))
+pidfd_free(struct pidfd_data *data)
+{
+ free(data->nspid);
+}
diff --git a/misc-utils/lsfd-unkn.c b/misc-utils/lsfd-unkn.c
index 8f6e9084..8e257f47 100644
--- a/misc-utils/lsfd-unkn.c
+++ b/misc-utils/lsfd-unkn.c
@@ -28,6 +28,7 @@
#include "timeutils.h"
#include "lsfd.h"
+#include "lsfd-pidfd.h"
#define offsetofend(TYPE, MEMBER) \
(offsetof(TYPE, MEMBER) + sizeof_member(TYPE, MEMBER))
@@ -183,10 +184,6 @@ static int unkn_handle_fdinfo(struct file *file, const char *key, const char *va
/*
* pidfd
*/
-struct anon_pidfd_data {
- pid_t pid;
- char *nspid;
-};
static bool anon_pidfd_probe(const char *str)
{
@@ -195,51 +192,28 @@ static bool anon_pidfd_probe(const char *str)
static char *anon_pidfd_get_name(struct unkn *unkn)
{
- char *str = NULL;
- struct anon_pidfd_data *data = (struct anon_pidfd_data *)unkn->anon_data;
+ struct pidfd_data *data = (struct pidfd_data *)unkn->anon_data;
- char *comm = NULL;
- struct proc *proc = get_proc(data->pid);
- if (proc)
- comm = proc->command;
-
- xasprintf(&str, "pid=%d comm=%s nspid=%s",
- data->pid,
- comm? comm: "",
- data->nspid? data->nspid: "");
- return str;
+ return pidfd_get_name(data);
}
static void anon_pidfd_init(struct unkn *unkn)
{
- unkn->anon_data = xcalloc(1, sizeof(struct anon_pidfd_data));
+ unkn->anon_data = xcalloc(1, sizeof(struct pidfd_data));
}
static void anon_pidfd_free(struct unkn *unkn)
{
- struct anon_pidfd_data *data = (struct anon_pidfd_data *)unkn->anon_data;
+ struct pidfd_data *data = (struct pidfd_data *)unkn->anon_data;
- if (data->nspid)
- free(data->nspid);
+ pidfd_free(data);
free(data);
}
static int anon_pidfd_handle_fdinfo(struct unkn *unkn, const char *key, const char *value)
{
- if (strcmp(key, "Pid") == 0) {
- uint64_t pid;
-
- int rc = ul_strtou64(value, &pid, 10);
- if (rc < 0)
- return 0; /* ignore -- parse failed */
- ((struct anon_pidfd_data *)unkn->anon_data)->pid = (pid_t)pid;
- return 1;
- } else if (strcmp(key, "NSpid") == 0) {
- ((struct anon_pidfd_data *)unkn->anon_data)->nspid = xstrdup(value);
- return 1;
-
- }
- return 0;
+ return pidfd_handle_fdinfo((struct pidfd_data *)unkn->anon_data,
+ key, value);
}
static bool anon_pidfd_fill_column(struct proc *proc __attribute__((__unused__)),
@@ -249,32 +223,9 @@ static bool anon_pidfd_fill_column(struct proc *proc __attribute__((__unused__)
size_t column_index __attribute__((__unused__)),
char **str)
{
- struct anon_pidfd_data *data = (struct anon_pidfd_data *)unkn->anon_data;
-
- switch(column_id) {
- case COL_PIDFD_COMM: {
- struct proc *pidfd_proc = get_proc(data->pid);
- char *pidfd_comm = NULL;
- if (pidfd_proc)
- pidfd_comm = pidfd_proc->command;
- if (pidfd_comm) {
- *str = xstrdup(pidfd_comm);
- return true;
- }
- break;
- }
- case COL_PIDFD_NSPID:
- if (data->nspid) {
- *str = xstrdup(data->nspid);
- return true;
- }
- break;
- case COL_PIDFD_PID:
- xasprintf(str, "%d", (int)data->pid);
- return true;
- }
-
- return false;
+ return pidfd_fill_column((struct pidfd_data *)unkn->anon_data,
+ column_id,
+ str);
}
static const struct anon_ops anon_pidfd_ops = {
diff --git a/misc-utils/meson.build b/misc-utils/meson.build
index 847b1012..68ea9777 100644
--- a/misc-utils/meson.build
+++ b/misc-utils/meson.build
@@ -56,6 +56,7 @@ lsfd_sources = files (
'lsfd-sock-xinfo.c',
'lsfd-unkn.c',
'lsfd-fifo.c',
+ 'lsfd-pidfd.c',
)
uuidgen_sources = files(
--
2.45.0

View File

@ -0,0 +1,186 @@
From: Xi Ruoyao <xry111@xry111.site>
Date: Wed, 3 Apr 2024 15:46:57 +0800
Subject: lsfd: Support pidfs
Git-repo: https://github.com/util-linux/util-linux.git
Git-commit: b1a48efd173c7f37d8df39a84eb25b4440335661
Patch-mainline: yes
References: kernel 6.9
In Linux 6.9 pidfds are moved from the anonymous inode infrastructure to
a tiny pseudo filesystem named pidfs. Recognize it properly.
Fixes #2865.
Signed-off-by: Xi Ruoyao <xry111@xry111.site>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
misc-utils/lsfd-file.c | 96 ++++++++++++++++++++++++++++++++++++++++++
misc-utils/lsfd.c | 3 ++
misc-utils/lsfd.h | 7 ++-
3 files changed, 105 insertions(+), 1 deletion(-)
diff --git a/misc-utils/lsfd-file.c b/misc-utils/lsfd-file.c
index 9b91462d..3f330146 100644
--- a/misc-utils/lsfd-file.c
+++ b/misc-utils/lsfd-file.c
@@ -45,6 +45,8 @@
#include "procfs.h"
#include "lsfd.h"
+#include "lsfd-pidfd.h"
+#include "pidfd-utils.h"
static struct idcache *username_cache;
@@ -492,6 +494,22 @@ static unsigned long get_minor_for_mqueue(void)
return minor(sb.st_dev);
}
+static unsigned long get_minor_for_pidfs(void)
+{
+ int fd = pidfd_open(getpid(), 0);
+ struct stat sb;
+ unsigned long ret = 0;
+
+ if (fd < 0)
+ return 0;
+
+ if (fstat(fd, &sb) == 0 && (sb.st_mode & S_IFMT) == S_IFREG)
+ ret = minor(sb.st_dev);
+
+ close(fd);
+ return ret;
+}
+
static void file_class_initialize(void)
{
unsigned long m;
@@ -510,6 +528,10 @@ static void file_class_initialize(void)
m = get_minor_for_mqueue();
if (m)
add_nodev(m, "mqueue");
+
+ m = get_minor_for_pidfs();
+ if (m)
+ add_nodev(m, "pidfs");
}
static void file_class_finalize(void)
@@ -783,3 +805,77 @@ const struct file_class mqueue_file_class = {
.fill_column = mqueue_file_fill_column,
.get_ipc_class = mqueue_file_get_ipc_class,
};
+
+struct pidfs_file {
+ struct file file;
+ struct pidfd_data data;
+};
+
+static void init_pidfs_file_content(struct file *file)
+{
+ struct pidfs_file *pidfs_file = (struct pidfs_file *)file;
+
+ memset(&pidfs_file->data, 0, sizeof(pidfs_file->data));
+}
+
+static int pidfs_file_handle_fdinfo(struct file *file, const char *key, const char *value)
+{
+ struct pidfs_file *pidfs_file = (struct pidfs_file *)file;
+
+ return pidfd_handle_fdinfo(&pidfs_file->data, key, value);
+}
+
+static void pidfs_file_free_content(struct file *file)
+{
+ struct pidfs_file *pidfs_file = (struct pidfs_file *)file;
+
+ pidfd_free(&pidfs_file->data);
+}
+
+static bool pidfs_file_fill_column(struct proc *proc __attribute__((__unused__)),
+ struct file *file,
+ struct libscols_line *ln,
+ int column_id,
+ size_t column_index)
+{
+ struct pidfs_file *pidfs_file = (struct pidfs_file *)file;
+ char *buf = NULL;
+
+ switch(column_id) {
+ case COL_TYPE:
+ if (scols_line_set_data(ln, column_index, "pidfd"))
+ err(EXIT_FAILURE, _("failed to add output data"));
+ return true;
+ case COL_NAME:
+ buf = pidfd_get_name(&pidfs_file->data);
+ break;
+ default:
+ if (!pidfd_fill_column(&pidfs_file->data, column_id, &buf))
+ return false;
+ }
+
+ if (buf &&
+ scols_line_refer_data(ln, column_index, buf))
+ err(EXIT_FAILURE, _("failed to add output data"));
+
+ return true;
+}
+
+const struct file_class pidfs_file_class = {
+ .super = &file_class,
+ .size = sizeof(struct pidfs_file),
+ .initialize_content = init_pidfs_file_content,
+ .handle_fdinfo = pidfs_file_handle_fdinfo,
+ .fill_column = pidfs_file_fill_column,
+ .free_content = pidfs_file_free_content,
+};
+
+bool is_pidfs_dev(dev_t dev)
+{
+ const char *fs = get_nodev_filesystem(minor(dev));
+
+ if (fs && (strcmp (fs, "pidfs") == 0))
+ return true;
+
+ return false;
+}
diff --git a/misc-utils/lsfd.c b/misc-utils/lsfd.c
index 98820ee8..01e88d51 100644
--- a/misc-utils/lsfd.c
+++ b/misc-utils/lsfd.c
@@ -683,6 +683,9 @@ static const struct file_class *stat2class(struct stat *sb)
if (is_mqueue_dev(dev))
return &mqueue_file_class;
+ if (is_pidfs_dev(dev))
+ return &pidfs_file_class;
+
return &file_class;
default:
break;
diff --git a/misc-utils/lsfd.h b/misc-utils/lsfd.h
index e646758c..f0f17d5b 100644
--- a/misc-utils/lsfd.h
+++ b/misc-utils/lsfd.h
@@ -228,7 +228,7 @@ struct file_class {
};
extern const struct file_class file_class, cdev_class, bdev_class, sock_class, unkn_class, fifo_class,
- nsfs_file_class, mqueue_file_class;
+ nsfs_file_class, mqueue_file_class, pidfs_file_class;
/*
* IPC
@@ -307,4 +307,9 @@ bool is_mqueue_dev(dev_t dev);
*/
bool is_multiplexed_by_eventpoll(int fd, struct list_head *eventpolls);
+/*
+ * Pidfs
+ */
+bool is_pidfs_dev(dev_t dev);
+
#endif /* UTIL_LINUX_LSFD_H */
--
2.45.0

View File

@ -0,0 +1,142 @@
From: Xi Ruoyao <xry111@xry111.site>
Date: Thu, 28 Mar 2024 04:01:02 +0800
Subject: lsfd: test: Adapt test cases for pidfs
Git-repo: https://github.com/util-linux/util-linux.git
Git-commit: 04db2ba9008e9635286b1aafc8ecd9533a0a91bf
Patch-mainline: yes
References: kernel 6.9
On Linux >= 6.9, pidfds are from pidfs instead of anonymous inode.
Thus:
STTYPE is REG on Linux >= 6.9, UNKN on Linux < 6.9.
KNAME is pidfd:[inode number] on Linux >= 6.9, anon_inode:[pidfd] on
Linux < 6.9.
And ainode_class test cannot work on Linux >= 6.9, just skip this sub
test if STTYPE is REG.
Signed-off-by: Xi Ruoyao <xry111@xry111.site>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
tests/expected/lsfd/column-name-pidfd | 2 +-
tests/expected/lsfd/column-type-pidfd | 2 +-
tests/expected/lsfd/mkfds-pidfd | 2 +-
tests/ts/lsfd/column-ainodeclass | 8 ++++++++
tests/ts/lsfd/column-name | 7 +++++++
tests/ts/lsfd/column-type | 7 +++++++
tests/ts/lsfd/mkfds-pidfd | 4 ++++
7 files changed, 29 insertions(+), 3 deletions(-)
diff --git a/tests/expected/lsfd/column-name-pidfd b/tests/expected/lsfd/column-name-pidfd
index 10e3c5e7..68787d69 100644
--- a/tests/expected/lsfd/column-name-pidfd
+++ b/tests/expected/lsfd/column-name-pidfd
@@ -1,2 +1,2 @@
-3 anon_inode:[pidfd] pid=1 comm= nspid=1
+3 [KNAME] pid=1 comm= nspid=1
pidfd:ASSOC,KNAME,NAME: 0
diff --git a/tests/expected/lsfd/column-type-pidfd b/tests/expected/lsfd/column-type-pidfd
index 6c9a9632..a4379807 100644
--- a/tests/expected/lsfd/column-type-pidfd
+++ b/tests/expected/lsfd/column-type-pidfd
@@ -1,2 +1,2 @@
-3 UNKN pidfd
+3 [STTYPE] pidfd
pidfd:ASSOC,STTYPE,TYPE: 0
diff --git a/tests/expected/lsfd/mkfds-pidfd b/tests/expected/lsfd/mkfds-pidfd
index 94846992..bce4dd42 100644
--- a/tests/expected/lsfd/mkfds-pidfd
+++ b/tests/expected/lsfd/mkfds-pidfd
@@ -1,2 +1,2 @@
-3 UNKN anon_inodefs pid=1 comm=systemd nspid=1 systemd 1
+3 [STTYPE] [SOURCE] pid=1 comm=systemd nspid=1 systemd 1
ASSOC,STTYPE,SOURCE,NAME,PIDFD.COMM,PIDFD.PID: 0
diff --git a/tests/ts/lsfd/column-ainodeclass b/tests/ts/lsfd/column-ainodeclass
index 6829494f..ab2abebd 100755
--- a/tests/ts/lsfd/column-ainodeclass
+++ b/tests/ts/lsfd/column-ainodeclass
@@ -42,10 +42,18 @@ for C in pidfd inotify; do
fi
wait "${MKFDS_PID}"
} > "$TS_OUTPUT" 2>&1
+
if [ "$C-$?" == "pidfd-$TS_EXIT_NOTSUPP" ]; then
ts_skip_subtest "pidfd_open(2) is not available"
continue
fi
+
+ STTYPE="$(head -n1 "$TS_OUTPUT" | awk '{print $2}')"
+ if [ "$C-$STTYPE" == "pidfd-REG" ]; then
+ ts_skip_subtest "pidfd is from pidfs instead of anon inode"
+ continue
+ fi
+
ts_finalize_subtest
done
diff --git a/tests/ts/lsfd/column-name b/tests/ts/lsfd/column-name
index 8bf8f421..9c67de88 100755
--- a/tests/ts/lsfd/column-name
+++ b/tests/ts/lsfd/column-name
@@ -64,10 +64,17 @@ for C in ro-regular-file pidfd socketpair; do
fi
} > "$TS_OUTPUT" 2>&1
wait "${MKFDS_PID}"
+
if [ "$C-$?" == "pidfd-$TS_EXIT_NOTSUPP" ]; then
ts_skip_subtest "pidfd_open(2) is not available"
continue
fi
+
+ case $C in
+ pidfd)
+ sed -i -E 's/(pidfd|anon_inode):\[[a-zA-Z]+\]/[KNAME]/' "$TS_OUTPUT"
+ esac
+
ts_finalize_subtest
done
diff --git a/tests/ts/lsfd/column-type b/tests/ts/lsfd/column-type
index 77bc5c94..1b8aa8c6 100755
--- a/tests/ts/lsfd/column-type
+++ b/tests/ts/lsfd/column-type
@@ -50,10 +50,17 @@ for C in ro-regular-file pidfd inotify socketpair; do
fi
wait "${MKFDS_PID}"
} > "$TS_OUTPUT" 2>&1
+
if [ "$C-$?" == "pidfd-$TS_EXIT_NOTSUPP" ]; then
ts_skip_subtest "pidfd_open(2) is not available"
continue
fi
+
+ case $C in
+ pidfd)
+ sed -i -E 's/UNKN|REG/[STTYPE]/' "$TS_OUTPUT"
+ esac
+
ts_finalize_subtest
done
diff --git a/tests/ts/lsfd/mkfds-pidfd b/tests/ts/lsfd/mkfds-pidfd
index c0fae4f7..9b0ff33c 100755
--- a/tests/ts/lsfd/mkfds-pidfd
+++ b/tests/ts/lsfd/mkfds-pidfd
@@ -44,8 +44,12 @@ EXPR="(PID != ${TARGET}) and (FD == 3) and (PIDFD.PID == ${TARGET})"
fi
wait ${MKFDS_PID}
} > $TS_OUTPUT 2>&1
+
if [ "$?" == "$TS_EXIT_NOTSUPP" ]; then
ts_skip "pidfd_open(2) is not available"
fi
+sed -i -E -e 's/UNKN|REG/[STTYPE]/' -e 's/pidfs|anon_inodefs/[SOURCE]/' \
+ $TS_OUTPUT
+
ts_finalize
--
2.45.0

View File

@ -1,3 +1,22 @@
-------------------------------------------------------------------
Tue Jul 16 13:25:03 UTC 2024 - Valentin Lefebvre <valentin.lefebvre@suse.com>
- uncomment "autoreconf --install" to use the new version of automake
-------------------------------------------------------------------
Mon Jun 10 10:44:55 UTC 2024 - Dirk Müller <dmueller@suse.com>
- disable libmagic in more(1) for binary detection (bsc#1225197)
-------------------------------------------------------------------
Thu May 16 07:12:22 UTC 2024 - Jiri Slaby <jslaby@suse.cz>
- add support for pidfs in kernel 6.9 (bsc#1224285)
* 0001-include-Include-unistd.h-in-pidfd-utils.h-for-syscal.patch
* 0002-lsfd-Refactor-the-pidfd-logic-into-lsfd-pidfd.c.patch
* 0003-lsfd-Support-pidfs.patch
* 0004-lsfd-test-Adapt-test-cases-for-pidfs.patch
------------------------------------------------------------------- -------------------------------------------------------------------
Wed May 8 14:06:51 UTC 2024 - Thorsten Kukuk <kukuk@suse.com> Wed May 8 14:06:51 UTC 2024 - Thorsten Kukuk <kukuk@suse.com>
@ -128,7 +147,7 @@ Thu Dec 7 13:22:16 UTC 2023 - Goldwyn Rodrigues <rgoldwyn@suse.com>
------------------------------------------------------------------- -------------------------------------------------------------------
Thu Dec 7 13:02:30 UTC 2023 - Goldwyn Rodrigues <rgoldwyn@suse.com> Thu Dec 7 13:02:30 UTC 2023 - Goldwyn Rodrigues <rgoldwyn@suse.com>
- Update to release 2.29.3 - Update to release 2.39.3
* libblkid: add support for bcachefs sub-device labels * libblkid: add support for bcachefs sub-device labels
* libblkid: detect large bcachefs superblocks * libblkid: detect large bcachefs superblocks
* libblkid: validate that NTFS sector_size is a power of two * libblkid: validate that NTFS sector_size is a power of two
@ -291,7 +310,7 @@ Fri Jun 9 13:35:33 UTC 2023 - Antonio Teixeira <antonio.teixeira@suse.com>
------------------------------------------------------------------- -------------------------------------------------------------------
Tue May 9 19:46:41 UTC 2023 - Antonio Teixeira <antonio.teixeira@suse.com> Tue May 9 19:46:41 UTC 2023 - Antonio Teixeira <antonio.teixeira@suse.com>
- Suppress error messages for grep command where the input file - Suppress error messages for grep command where the input file
might not exist (boo#1169835) might not exist (boo#1169835)
------------------------------------------------------------------- -------------------------------------------------------------------
@ -420,7 +439,7 @@ Mon Jan 9 16:13:18 UTC 2023 - Fabian Vogt <fvogt@suse.com>
Fri Jan 6 09:27:26 UTC 2023 - Dirk Müller <dmueller@suse.com> Fri Jan 6 09:27:26 UTC 2023 - Dirk Müller <dmueller@suse.com>
- restore man and info pages - restore man and info pages
- clean up spec file slightly - clean up spec file slightly
------------------------------------------------------------------- -------------------------------------------------------------------
Tue Dec 27 13:23:29 UTC 2022 - Ludwig Nussel <lnussel@suse.com> Tue Dec 27 13:23:29 UTC 2022 - Ludwig Nussel <lnussel@suse.com>
@ -445,7 +464,7 @@ Wed Dec 14 22:57:15 UTC 2022 - Goldwyn Rodrigues <rgoldwyn@suse.com>
------------------------------------------------------------------- -------------------------------------------------------------------
Fri Dec 9 17:23:28 UTC 2022 - David Anes <david.anes@suse.com> Fri Dec 9 17:23:28 UTC 2022 - David Anes <david.anes@suse.com>
- Fix tests not passing when '@' character is in build path: - Fix tests not passing when '@' character is in build path:
Fixes rpmbuild %checks fail when @ in the directory path (bsc#1194038). Fixes rpmbuild %checks fail when @ in the directory path (bsc#1194038).
- Add util-linux-fix-tests-when-at-symbol-in-path.patch - Add util-linux-fix-tests-when-at-symbol-in-path.patch
@ -570,7 +589,7 @@ Thu Mar 3 03:22:45 UTC 2022 - Stanislav Brabec <sbrabec@suse.com>
Mon Jan 24 21:57:01 UTC 2022 - Dirk Müller <dmueller@suse.com> Mon Jan 24 21:57:01 UTC 2022 - Dirk Müller <dmueller@suse.com>
- update to 2.37.3 (bsc#1194976): - update to 2.37.3 (bsc#1194976):
This release fixes two security mount(8) and umount(8) issues: This release fixes two security mount(8) and umount(8) issues:
* CVE-2021-3996 * CVE-2021-3996
Improper UID check in libmount allows an unprivileged user to unmount FUSE Improper UID check in libmount allows an unprivileged user to unmount FUSE
filesystems of users with similar UID. filesystems of users with similar UID.
@ -1299,7 +1318,7 @@ Mon Nov 20 17:29:11 CET 2017 - sbrabec@suse.com
(new option --pty, CVE-2016-2779, bsc#968674). This new (new option --pty, CVE-2016-2779, bsc#968674). This new
EXPERIMENTAL feature provides better isolation between root's EXPERIMENTAL feature provides better isolation between root's
terminal and an unprivileged su. terminal and an unprivileged su.
* libuuid: Improved to match * libuuid: Improved to match
* libuuid, uuidgen: support hash-based UUIDs v3 (md5) and v5 * libuuid, uuidgen: support hash-based UUIDs v3 (md5) and v5
(sha1) as specified by RFC-4122. Provide UUID templates for (sha1) as specified by RFC-4122. Provide UUID templates for
dns, url, oid, or x500. dns, url, oid, or x500.
@ -1353,7 +1372,7 @@ Thu Jul 20 13:51:20 UTC 2017 - sweet_f_a@gmx.de
Bugfix release, more details at: Bugfix release, more details at:
https://www.kernel.org/pub/linux/utils/util-linux/v2.30/v2.30.1-ReleaseNotes https://www.kernel.org/pub/linux/utils/util-linux/v2.30/v2.30.1-ReleaseNotes
- Drop upstreamed patch - Drop upstreamed patch
util-linux-lscpu-cleanup-DMI-detection-return-codes.patch util-linux-lscpu-cleanup-DMI-detection-return-codes.patch
------------------------------------------------------------------- -------------------------------------------------------------------
Mon Jul 3 12:38:36 UTC 2017 - schwab@suse.de Mon Jul 3 12:38:36 UTC 2017 - schwab@suse.de
@ -1398,7 +1417,7 @@ Thu Jun 8 21:21:12 UTC 2017 - sweet_f_a@gmx.de
- Drop upstreamed patch - Drop upstreamed patch
arm64-lscpu-use-sysfs-for-table-access-if-available.patch arm64-lscpu-use-sysfs-for-table-access-if-available.patch
- Refreshed patch - Refreshed patch
util-linux-losetup-Add-support-for-setting-logical-blocksize.patch util-linux-losetup-Add-support-for-setting-logical-blocksize.patch
- fix compiler warnings for mkzimage_cmdline - fix compiler warnings for mkzimage_cmdline
------------------------------------------------------------------- -------------------------------------------------------------------

View File

@ -111,11 +111,14 @@ Patch2: Add-documentation-on-blacklisted-modules-to-mount-8-.patch
# PATCH-FIX-SUSE util-linux-bash-completion-su-chsh-l.patch bsc1172427 -- Fix "su -s" bash completion. # PATCH-FIX-SUSE util-linux-bash-completion-su-chsh-l.patch bsc1172427 -- Fix "su -s" bash completion.
Patch3: util-linux-bash-completion-su-chsh-l.patch Patch3: util-linux-bash-completion-su-chsh-l.patch
Patch5: static_lib.patch Patch5: static_lib.patch
Patch6: 0001-include-Include-unistd.h-in-pidfd-utils.h-for-syscal.patch
Patch7: 0002-lsfd-Refactor-the-pidfd-logic-into-lsfd-pidfd.c.patch
Patch8: 0003-lsfd-Support-pidfs.patch
Patch9: 0004-lsfd-test-Adapt-test-cases-for-pidfs.patch
BuildRequires: audit-devel BuildRequires: audit-devel
BuildRequires: bc BuildRequires: bc
BuildRequires: binutils-devel BuildRequires: binutils-devel
BuildRequires: fdupes BuildRequires: fdupes
BuildRequires: file-devel
BuildRequires: gettext-devel BuildRequires: gettext-devel
BuildRequires: libcap-ng-devel BuildRequires: libcap-ng-devel
BuildRequires: libeconf-devel-static BuildRequires: libeconf-devel-static
@ -464,6 +467,7 @@ cp -a %{S:2} .
%autopatch -p1 %autopatch -p1
# This test randomly fails or keeps hanging task inside build chroot (tested on 2.38). # This test randomly fails or keeps hanging task inside build chroot (tested on 2.38).
rm tests/ts/lsns/ioctl_ns rm tests/ts/lsns/ioctl_ns
AUTOPOINT=true GTKDOCIZE=true autoreconf -vfi
%build %build
%global _lto_cflags %{_lto_cflags} -ffat-lto-objects %global _lto_cflags %{_lto_cflags} -ffat-lto-objects
@ -479,6 +483,10 @@ function configure_and_build() {
# configure options depending on ulbuild and ulsubset values # configure options depending on ulbuild and ulsubset values
configure_options="" configure_options=""
# libmagic is only used for determining in more(1) whether or not a file
# is binary. but it has builtin code that is doing the same with a simpler
# check and the libmagic database dependency is rather large (9MB+)
configure_options+="--without-libmagic "
%if "%ulbuild" == "python" %if "%ulbuild" == "python"
%define _configure ../configure %define _configure ../configure
@ -506,7 +514,6 @@ configure_options+="--with-systemd "
%endif %endif
# ulsubset == systemd # ulsubset == systemd
#AUTOPOINT=true GTKDOCIZE=true autoreconf -vfi
# All dirs needs to be specified, as %%configure does not derive them # All dirs needs to be specified, as %%configure does not derive them
# from %%_prefix, and bootstrap build will fall back to /usr. # from %%_prefix, and bootstrap build will fall back to /usr.
%configure\ %configure\
@ -1034,7 +1041,7 @@ rmdir --ignore-fail-on-non-empty /run/run >/dev/null 2>&1 || :
%core %{_bindir}/irqtop %core %{_bindir}/irqtop
%core %{_bindir}/isosize %core %{_bindir}/isosize
%if 0%{?suse_version} >= 1599 %if 0%{?suse_version} >= 1600
# last provided by wtmpdb, btmp support dropped # last provided by wtmpdb, btmp support dropped
%exclude %{_bindir}/last %exclude %{_bindir}/last
%exclude %{_bindir}/lastb %exclude %{_bindir}/lastb
@ -1042,7 +1049,6 @@ rmdir --ignore-fail-on-non-empty /run/run >/dev/null 2>&1 || :
%core %{_bindir}/last %core %{_bindir}/last
%core %{_bindir}/lastb %core %{_bindir}/lastb
%endif %endif
# 0%{?suse_version} >= 1599
%core %{_bindir}/line %core %{_bindir}/line
%core %{_bindir}/look %core %{_bindir}/look
@ -1143,7 +1149,7 @@ rmdir --ignore-fail-on-non-empty /run/run >/dev/null 2>&1 || :
%exclude %{_datadir}/bash-completion/completions/uuidd %exclude %{_datadir}/bash-completion/completions/uuidd
# wtmpdb # wtmpdb
%if 0%{?suse_version} >= 1599 %if 0%{?suse_version} >= 1600
%exclude %{_datadir}/bash-completion/completions/last %exclude %{_datadir}/bash-completion/completions/last
%exclude %{_datadir}/bash-completion/completions/lastb %exclude %{_datadir}/bash-completion/completions/lastb
%endif %endif
@ -1242,14 +1248,13 @@ rmdir --ignore-fail-on-non-empty /run/run >/dev/null 2>&1 || :
%core %{_mandir}/man1/ipcrm.1.gz %core %{_mandir}/man1/ipcrm.1.gz
%core %{_mandir}/man1/ipcs.1.gz %core %{_mandir}/man1/ipcs.1.gz
%if 0%{?suse_version} >= 1599 %if 0%{?suse_version} >= 1600
%exclude %{_mandir}/man1/last.1.gz %exclude %{_mandir}/man1/last.1.gz
%exclude %{_mandir}/man1/lastb.1.gz %exclude %{_mandir}/man1/lastb.1.gz
%else %else
%core %{_mandir}/man1/last.1.gz %core %{_mandir}/man1/last.1.gz
%core %{_mandir}/man1/lastb.1.gz %core %{_mandir}/man1/lastb.1.gz
%endif %endif
# 0%{?suse_version} >= 1599
%core %{_mandir}/man1/line.1.gz %core %{_mandir}/man1/line.1.gz
%core %{_mandir}/man1/login.1.gz %core %{_mandir}/man1/login.1.gz