diff --git a/0001-include-Include-unistd.h-in-pidfd-utils.h-for-syscal.patch b/0001-include-Include-unistd.h-in-pidfd-utils.h-for-syscal.patch deleted file mode 100644 index 8a61064..0000000 --- a/0001-include-Include-unistd.h-in-pidfd-utils.h-for-syscal.patch +++ /dev/null @@ -1,32 +0,0 @@ -From: Xi Ruoyao -Date: Sun, 31 Mar 2024 00:42:03 +0800 -Subject: include: Include 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, only contains SYS_* macros and the syscall() -function is in . So include it. - -Signed-off-by: Xi Ruoyao -Signed-off-by: Jiri Slaby ---- - 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 -+# include - - /* - * If the kernel headers are too old to provide the syscall numbers, let's --- -2.45.0 - diff --git a/0002-lsfd-Refactor-the-pidfd-logic-into-lsfd-pidfd.c.patch b/0002-lsfd-Refactor-the-pidfd-logic-into-lsfd-pidfd.c.patch deleted file mode 100644 index 9ee6f85..0000000 --- a/0002-lsfd-Refactor-the-pidfd-logic-into-lsfd-pidfd.c.patch +++ /dev/null @@ -1,319 +0,0 @@ -From: Xi Ruoyao -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 -Signed-off-by: Jiri Slaby ---- - 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 -+ * -+ * Refactored and moved out from lsfd-unkn.c (originally authored by -+ * Masatake YAMATO ). -+ * -+ * 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 -+ -+#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 -+ * -+ * 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 -+#include -+ -+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 - diff --git a/0003-lsfd-Support-pidfs.patch b/0003-lsfd-Support-pidfs.patch deleted file mode 100644 index a914b3d..0000000 --- a/0003-lsfd-Support-pidfs.patch +++ /dev/null @@ -1,186 +0,0 @@ -From: Xi Ruoyao -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 -Signed-off-by: Jiri Slaby ---- - 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 - diff --git a/0004-lsfd-test-Adapt-test-cases-for-pidfs.patch b/0004-lsfd-test-Adapt-test-cases-for-pidfs.patch deleted file mode 100644 index 1d8b72e..0000000 --- a/0004-lsfd-test-Adapt-test-cases-for-pidfs.patch +++ /dev/null @@ -1,142 +0,0 @@ -From: Xi Ruoyao -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 -Signed-off-by: Jiri Slaby ---- - 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 - diff --git a/util-linux-2.40.1.tar.sign b/util-linux-2.40.1.tar.sign deleted file mode 100644 index 4ca2db7..0000000 --- a/util-linux-2.40.1.tar.sign +++ /dev/null @@ -1,16 +0,0 @@ ------BEGIN PGP SIGNATURE----- - -iQIzBAABCAAdFiEEsMZNFDAcxu+u32Dk5LcdXuw5woQFAmY4lxMACgkQ5LcdXuw5 -woSckw//ZmoxCcjdDBv5LkAK0Yl5EMKZYzkvqswsp/Uwllgevb/FcCGwZ+F49RM3 -H8F5Kj5CIJW9wh2UNWxaMm4MxcGd3eG2NEwgYh8RiXSS84zEL78yaIJLyFlPziMp -kZb0fpc2HpyCzDrvtlw6S5TGkUUx2uFqTQQG7GFd6TOlbPpGp4OpqY3adf85mwmr -NKy0XbYLo6sqGENz6Uklbf5Qhc19UEEc1jScOYNpkuCxhRQguxq3Jc6W8A8DQkjB -EWaw9Q1XYDV3Bnd40F0K+bo3CYB6z3pMM51NlsYxV0fKt/SoEvJw3S7u3VcbtJWn -S6xl6q/sMINDrMIpSL5PAAg5yoBNIIoWW7OxSh0nv6ctp9dmln0sKBtXNr09zTWT -q9mLUt7LwXB6LT3XI64262vF21bKq/hQO8IObsx8vfPSlp1SyGq7VqGh6QVbkjx6 -2vA7ueV5jfIKiAlZAcXz6NHjwxcBqYq7wASeUEmYPgh5lb4HBOuOgatYBNAmQoxp -2t5AXPPhI/u95GRa4WntpgqlQm/1CKA9kHiezvO4P0lnpUluT24DXclMTcq4xaiN -ci+dzVF2EPRoPJgYy9crKNsr7dftVtvAVXIRk3UaTwDe1o7OK4vSykDc0PSNxsHQ -mMabBuFt17oweonotSOZ8z7blHnCVnzZWVxyIxC3Pw/0ChHFAkw= -=68JD ------END PGP SIGNATURE----- diff --git a/util-linux-2.40.1.tar.xz b/util-linux-2.40.1.tar.xz deleted file mode 100644 index ea93fed..0000000 --- a/util-linux-2.40.1.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:59e676aa53ccb44b6c39f0ffe01a8fa274891c91bef1474752fad92461def24f -size 8823784 diff --git a/util-linux-2.40.2.tar.sign b/util-linux-2.40.2.tar.sign new file mode 100644 index 0000000..f9d649c --- /dev/null +++ b/util-linux-2.40.2.tar.sign @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCAAdFiEEsMZNFDAcxu+u32Dk5LcdXuw5woQFAmaGWfQACgkQ5LcdXuw5 +woQyjw/+Pv55mIJB4V6DM/ZWWEgTKosHRaJK8NyZ8EieuBBz3BDxa8KECru0l8zK +3wNiS/H15xnDlVPysQx+tk9ieWc4vPNTJ0WCbb9w4DS1P9aEpG4GwgAoQ+a+MbJY +yYdfBYXLFMAxxIM7Crvls14rC5c4MCdFRMaVVdiqQSG6OKTuLXOGV+QglrzeVO6f +03SKVv4NS/ModEoZwkGNBB+c63lKVLATIEhBQHE+TL9oB/KtLyEDEEwXc/5Pclz7 +pGM7knNN6O553NN4G5z0ez1ovZtbGJgNO9arLt2mLau57+dCoodCJn3ohagCfZH5 +ZeZI8ajj6sxZ2kgfvFF84wYP/eFZf0/3XOZfbif4Hy7UcV/bxZdQION62gvpiy/c +/cdHN8Sga2B/1yNQyTO5oZTwr1fGnlInuy5LkvT7ZpfTtLR+QS9OhVcPWBbfYJbD +D8KKIfPkuuzsWkpKqCmTim/67s3ZY0zIXWTOntMcFelItrfkr0wClEivBji+f97U +wARhXLdS84MqEKyM7VH8hYpl6fgqpJPgWnO+91roXQyrnUCJVzM730oIDiEm1PKI +tXnQo5qF+nBpBTvIvfDa5e52mcou42yMGQxGrCmkvzfm9Vypyz7lnyLRrzULYAqA +0BZwMNwry1vmhYDWLKGH2TKkE5C7d+nwU4dzOCQWPTJhdm2FKcc= +=YzYC +-----END PGP SIGNATURE----- diff --git a/util-linux-2.40.2.tar.xz b/util-linux-2.40.2.tar.xz new file mode 100644 index 0000000..4ffeedd --- /dev/null +++ b/util-linux-2.40.2.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d78b37a66f5922d70edf3bdfb01a6b33d34ed3c3cafd6628203b2a2b67c8e8b3 +size 8854820 diff --git a/util-linux-rpmlintrc b/util-linux-rpmlintrc deleted file mode 100644 index fc942ab..0000000 --- a/util-linux-rpmlintrc +++ /dev/null @@ -1,7 +0,0 @@ -# False positives. Libraries outside LD_LIBRARY_PATH use RPATH to find libraries, not ldconfig. -addFilter("library-without-ldconfig-postin /usr/libexec/build/staging/.*") -addFilter("library-without-ldconfig-postun /usr/libexec/build/staging/.*") -# Not applicable for multi flavor build. -addFilter("invalid-spec-name") -# Not important, and it simplifies packaging. -addFilter("non-etc-or-var-file-marked-as-conffile /usr/libexec/build/staging/.*") diff --git a/util-linux.changes b/util-linux.changes index b85a22f..83b88a8 100644 --- a/util-linux.changes +++ b/util-linux.changes @@ -1,3 +1,34 @@ +------------------------------------------------------------------- +Mon Oct 21 23:25:19 UTC 2024 - Stanislav Brabec + +- Disable mountfd API again. + (https://github.com/util-linux/util-linux/issues/3158) + +------------------------------------------------------------------- +Mon Aug 5 22:14:13 UTC 2024 - Stanislav Brabec + +- Update to version 2.40.2: + * cfdisk: fix possible integer overflow + * libmount: improving robustness in reading kernel messages, + add pidfs to pseudo fs list + * lscpu: New Arm Cortex part numbers + * lsfd: Refactor the pidfd logic, support pidfs + (obsoletes + 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) + * mkswap.8.adoc: update note regarding swapfile creation + * setpgid: make -f work + * Many other fixes, improvements and code cleanup. For the + complete list see + https://mirrors.edge.kernel.org/pub/linux/utils/util-linux/v2.40/v2.40.2-ReleaseNotes +- Enable kernel mountfd API, as it should be already stable + (PED-9752). +- Move autoreconf back to %build. +- Add devel dependencies. +- Remove util-linux-rpmlintrc. It is no more needed with multibuild. + ------------------------------------------------------------------- Tue Jul 16 13:25:03 UTC 2024 - Valentin Lefebvre diff --git a/util-linux.spec b/util-linux.spec index 5322172..128b424 100644 --- a/util-linux.spec +++ b/util-linux.spec @@ -85,13 +85,12 @@ Group: Development/Languages/Python %endif # ulbuild == python -Version: 2.40.1 +Version: 2.40.2 Release: 0 License: GPL-2.0-or-later URL: https://www.kernel.org/pub/linux/utils/util-linux/ Source: https://www.kernel.org/pub/linux/utils/util-linux/v2.40/util-linux-%{version}.tar.xz Source2: util-linux-login_defs-check.sh -Source3: util-linux-rpmlintrc Source7: baselibs.conf Source8: login.pamd Source9: remote.pamd @@ -111,10 +110,6 @@ 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. Patch3: util-linux-bash-completion-su-chsh-l.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: bc BuildRequires: binutils-devel @@ -280,7 +275,10 @@ Library for filesystem detection. Summary: Development files for the filesystem detection library License: LGPL-2.1-or-later Group: Development/Libraries/C and C++ +Requires: glibc-devel +Requires: libblkid-devel Requires: libfdisk1 = %{version} +Requires: libuuid-devel %description -n libfdisk-devel Files needed to develop applications using the library for filesystem @@ -290,7 +288,10 @@ detection. Summary: Development files for the filesystem detection library License: LGPL-2.1-or-later Group: Development/Libraries/C and C++ +Requires: libblkid-devel-static +Requires: libeconf-devel Requires: libfdisk-devel = %{version} +Requires: libuuid-devel-static %description -n libfdisk-devel-static Files needed to develop applications using the library for filesystem @@ -309,7 +310,10 @@ mount(8) and /usr/sbin/mount. helpers. Summary: Development files for libmount License: LGPL-2.1-or-later Group: Development/Libraries/C and C++ +Requires: libblkid-devel +Requires: libeconf-devel Requires: libmount1 = %{version} +Requires: libselinux-devel %description -n libmount-devel Files to develop applications using the libmount library. @@ -318,6 +322,7 @@ Files to develop applications using the libmount library. Summary: Development files for libmount License: LGPL-2.1-or-later Group: Development/Libraries/C and C++ +Requires: libblkid-devel-static Requires: libmount-devel = %{version} %description -n libmount-devel-static @@ -364,6 +369,7 @@ A library to generate universally unique IDs (UUIDs). Summary: Development files for libuuid License: BSD-3-Clause Group: Development/Libraries/C and C++ +Requires: glibc-devel Requires: libuuid1 = %{version} %description -n libuuid-devel @@ -467,9 +473,9 @@ cp -a %{S:2} . %autopatch -p1 # This test randomly fails or keeps hanging task inside build chroot (tested on 2.38). rm tests/ts/lsns/ioctl_ns -AUTOPOINT=true GTKDOCIZE=true autoreconf -vfi %build +AUTOPOINT=true GTKDOCIZE=true autoreconf -vfi %global _lto_cflags %{_lto_cflags} -ffat-lto-objects export SUID_CFLAGS="-fpie" export SUID_LDFLAGS="-pie" @@ -553,8 +559,8 @@ configure_options+="--with-systemd " --disable-pg\ --enable-fs-paths-default="/sbin:/usr/sbin"\ --enable-static\ - --with-vendordir=%{_distconfdir} \ - --disable-libmount-mountfd-support \ + --with-vendordir=%{_distconfdir}\ + --disable-libmount-mountfd-support\ $configure_options make %{?_smp_mflags} }