]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
tests: (prlimit) add pid:ino address format test
authorChristian Goeschel Ndjomouo <cgoesc2@wgu.edu>
Sun, 29 Mar 2026 19:34:40 +0000 (15:34 -0400)
committerChristian Goeschel Ndjomouo <cgoesc2@wgu.edu>
Mon, 30 Mar 2026 12:44:15 +0000 (08:44 -0400)
Signed-off-by: Christian Goeschel Ndjomouo <cgoesc2@wgu.edu>
tests/commands.sh
tests/ts/prlimit/pidfd_ino [new file with mode: 0755]

index 3a904fb9654a1a9270b807893107f4558a517eb3..32e343bf9af959faad79b8a5e2147c69b91923e3 100644 (file)
@@ -127,6 +127,7 @@ TS_CMD_NAMEI=${TS_CMD_NAMEI-"${ts_commandsdir}namei"}
 TS_CMD_NSENTER=${TS_CMD_NSENTER-"${ts_commandsdir}nsenter"}
 TS_CMD_PARTX=${TS_CMD_PARTX-"${ts_commandsdir}partx"}
 TS_CMD_PIPESZ=${TS_CMD_PIPESZ-"${ts_commandsdir}pipesz"}
+TS_CMD_PRLIMIT=${TS_CMD_PRLIMIT-"${ts_commandsdir}prlimit"}
 TS_CMD_RENAME=${TS_CMD_RENAME-"${ts_commandsdir}rename"}
 TS_CMD_RUNUSER=${TS_CMD_RUNUSER-"${ts_commandsdir}runuser"}
 TS_CMD_REV=${TS_CMD_REV:-"${ts_commandsdir}rev"}
diff --git a/tests/ts/prlimit/pidfd_ino b/tests/ts/prlimit/pidfd_ino
new file mode 100755 (executable)
index 0000000..3952188
--- /dev/null
@@ -0,0 +1,47 @@
+#!/bin/bash
+
+# This file is part of util-linux.
+#
+# This file 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 file is distributed in the hope that it will 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.
+#
+# Copyright (C) 2026 Christian Goeschel Ndjomouo <cgoesc2@wgu.edu>
+
+TS_TOPDIR="${0%/*}/../.."
+TS_DESC="pid-inode address format"
+
+. "$TS_TOPDIR/functions.sh"
+ts_init "$*"
+
+# The pidfs was only introduced in kernel version 6.9,
+# which means we cannot get a valid pidfd from earlier versions,
+# so we can confidently anticipate a test failure.
+if ts_kernel_ver_lt 6 9; then
+       TS_KNOWN_FAIL="yes"
+fi
+
+ts_check_test_command "$TS_CMD_PRLIMIT"
+ts_check_test_command "$TS_CMD_GETINO"
+
+pid=$$
+pidino="$("$TS_CMD_GETINO" -p $pid)"
+
+num_open_fds="$(find /proc/self/fd/ -type l | wc -l)"
+new_rlimit_nofile_val="$((num_open_fds * 3))"
+
+"$TS_CMD_PRLIMIT" --pid "$pidino" --nofile="$new_rlimit_nofile_val": >> "$TS_OUTPUT" 2>> "$TS_ERRLOG"
+
+current_rlimit_nofile="$(ulimit -n)"
+
+if [[ "$new_rlimit_nofile_val" != "$current_rlimit_nofile" ]]; then
+        ts_failed "failed to set RLIMIT_NOFILE for $pid"
+fi
+
+ts_finalize