Karel Zak [Tue, 25 Nov 2025 11:56:07 +0000 (12:56 +0100)]
libmount: read from udev, add --disable-libmount-udev-support
The library traditionally uses libblkid to obtain device properties
(such as FS-type if not specified). This can be a relatively costly
operation to scan the device and requires read access to the device.
All relevant libblkid information is usually cached by the udev DB.
This commit adds the possibility to reuse the information from udev,
with a fallback to libblkid if udev is not available.
Karel Zak [Mon, 8 Dec 2025 08:59:41 +0000 (09:59 +0100)]
Merge branch 'fix/login_shell_arg_null_str' of https://github.com/cgoesche/util-linux-fork
* 'fix/login_shell_arg_null_str' of https://github.com/cgoesche/util-linux-fork:
login: duplicate --shell argument to avoid nulling through explicit_bzero()
Karel Zak [Thu, 4 Dec 2025 13:26:40 +0000 (14:26 +0100)]
Merge branch 'feat/login_shell_option' of https://github.com/cgoesche/util-linux-fork
* 'feat/login_shell_option' of https://github.com/cgoesche/util-linux-fork:
login: document -s and --shell on the man page
login: define shell to log in to with -s or --shell
Karel Zak [Wed, 3 Dec 2025 10:40:57 +0000 (11:40 +0100)]
Merge branch 'fix/issue_3865' of https://github.com/lord2y/util-linux
* 'fix/issue_3865' of https://github.com/lord2y/util-linux:
login-utils, sys-utils: use _PATH_BSHELL consistently
*: use ul_default_shell() for interactive shell spawning
lib: introduce ul_default_shell() for consistent shell resolution
Karel Zak [Wed, 3 Dec 2025 10:14:13 +0000 (11:14 +0100)]
Merge branch 'feat/check_bash_comp_integrity' of https://github.com/cgoesche/util-linux-fork
* 'feat/check_bash_comp_integrity' of https://github.com/cgoesche/util-linux-fork:
bash-completion: (lslogins) fix typo in long option
tools: (checkcompletion.sh) test the integrity of long options completion
tools: new helper for extraction of program long options from source files
Martin Minkus [Wed, 3 Dec 2025 03:51:05 +0000 (19:51 -0800)]
libfdisk: modernize ZFS GPT type description
The GPT type GUID 6A898CC3-1DD2-11B2-99A6-080020736631 is currently
described as "Solaris /usr & Apple ZFS". This reflects early Solaris
and Apple experiments with ZFS, but today the same GUID is widely used
by OpenZFS implementations on Linux, illumos, FreeBSD, and other
platforms to mark ZFS pool member partitions.
Apple's ZFS work was discontinued long ago, while OpenZFS has become
the actively maintained and de facto standard implementation. Update
the human-readable description to the simpler and more accurate:
"ZFS pool member"
A short comment is added to note the GUID’s historical Solaris /usr
origin and its brief use by Apple. Only the description string is
changed; the GUID itself and its semantics remain unchanged.
Alessandro Ratti [Sun, 23 Nov 2025 15:26:37 +0000 (16:26 +0100)]
login-utils, sys-utils: use _PATH_BSHELL consistently
Remove local DEFAULT_SHELL definitions and hardcoded "/bin/sh" strings
in favor of the standard _PATH_BSHELL macro from <paths.h>. This
provides consistency across the codebase while following libc
conventions.
These tools already perform their own passwd lookups and only need a
fallback value, so they don't require the full ul_default_shell()
resolution logic.
Affected tools:
- su(1): already checks pw_shell validity
- sulogin(8): emergency login with explicit shell handling
- setpriv(1): already has passwd entry for environment setup
Alessandro Ratti [Sun, 23 Nov 2025 15:24:52 +0000 (16:24 +0100)]
*: use ul_default_shell() for interactive shell spawning
Update tools that spawn interactive shells to use ul_default_shell()
for consistent shell resolution. This ensures these tools respect both
$SHELL and the user's configured shell from the passwd database before
falling back to _PATH_BSHELL.
Affected tools:
- script(1): fixes history truncation when invoked without $SHELL
- scriptlive(1): consistent with script(1) behavior
- flock(1): for -c command execution
- more(1): for shell escape feature
- exec_shell (used by unshare(1) and nsenter(1))
This change addresses user reports of data loss due to tools defaulting
to /bin/sh instead of the user's configured shell, particularly affecting
command history with different HISTSIZE configurations.
Alessandro Ratti [Sun, 23 Nov 2025 15:20:57 +0000 (16:20 +0100)]
lib: introduce ul_default_shell() for consistent shell resolution
Add a new ul_default_shell() function to provide consistent shell
resolution across util-linux tools. The function follows a priority
order: $SHELL environment variable, user's shell from passwd database,
and finally _PATH_BSHELL as fallback.
The function supports flags to control its behavior:
- UL_SHELL_NOENV: skip $SHELL environment variable check
- UL_SHELL_NOPWD: skip passwd database lookup
This addresses the issue where tools like script(1) would default to
/bin/sh without respecting the user's configured shell, potentially
causing data loss.
Addresses: https://github.com/util-linux/util-linux/issues/3865 Suggested-by: Karel Zak <kzak@redhat.com> Suggested-by: Thomas Weißschuh <thomas@t-8ch.de> Signed-off-by: Alessandro Ratti <alessandro@0x65c.net>
Karel Zak [Thu, 27 Nov 2025 15:46:22 +0000 (16:46 +0100)]
whereis: fix const qualifier warnings for C23
Fix const qualifier discarded warnings in dirlist_add_subdir() and
lookup() functions. These warnings are reported by gcc 15 which
defaults to the C23 standard.
The strchr() and strrchr() functions return pointers into const strings,
so the receiving variables must be declared as const char *.
Karel Zak [Thu, 27 Nov 2025 15:43:38 +0000 (16:43 +0100)]
logger: fix const qualifier warnings for C23
Fix const qualifier discarded warnings in valid_structured_data_param()
and valid_structured_data_id() functions. These warnings are reported by
gcc 15 which defaults to the C23 standard.
The strchr() and strstr() functions return pointers into const strings,
so the receiving variables must be declared as const char *.
Karel Zak [Thu, 27 Nov 2025 15:38:18 +0000 (16:38 +0100)]
lsfd: fix const qualifier warning in strnrstr
Fix const qualifier discarded warning in strnrstr().
This warning is reported by gcc 15 which defaults to the C23 standard.
The function returns a non-const pointer into the haystack parameter,
and callers modify the string through that pointer. Therefore, the
haystack parameter should be char * rather than const char *.
Karel Zak [Thu, 27 Nov 2025 15:35:56 +0000 (16:35 +0100)]
lsfd: fix const qualifier warning in new_counter_spec
Fix const qualifier discarded warning in new_counter_spec().
This warning is reported by gcc 15 which defaults to the C23 standard.
The function modifies the input string by inserting a null terminator
to split it into name and expression parts, so the parameter should
be char * rather than const char *.
Karel Zak [Thu, 27 Nov 2025 15:28:41 +0000 (16:28 +0100)]
libblkid: fix const qualifier warning in blkid_parse_tag_string
Fix const qualifier discarded warning in blkid_parse_tag_string().
This warning is reported by gcc 15 which defaults to the C23 standard.
The strchr() function returns a pointer into a const string, so
introduce a separate 'eq' variable to hold this const pointer for
finding the '=' separator. Also move the 'cp' variable declaration
into the block where it's actually used for quote handling.
Karel Zak [Thu, 27 Nov 2025 15:24:11 +0000 (16:24 +0100)]
libmount: fix const qualifier warning in mnt_parse_mountinfo_line
Fix const qualifier discarded warning in mnt_parse_mountinfo_line().
This warning is reported by gcc 15 which defaults to the C23 standard.
The strstr() function returns a pointer into a const string, so
introduce a separate 'sep' variable to hold this const pointer,
keeping 'p' for non-const unmangle() results that need to be freed.
Karel Zak [Thu, 27 Nov 2025 14:45:55 +0000 (15:45 +0100)]
libmount: fix const qualifier warnings for C23
Fix const qualifier discarded warnings in optlist_add_flags(),
mnt_opt_value_with(), and mnt_optstr_apply_flags() functions.
These warnings are reported by gcc 15 which defaults to the C23 standard.
The strchr() and strstr() functions return pointers into const strings,
so the receiving variables must be declared as const char *.
Karel Zak [Thu, 27 Nov 2025 14:41:21 +0000 (15:41 +0100)]
lsns: fix const qualifier warnings for C23
Fix const qualifier discarded warnings in read_persistent_namespaces()
and is_path_included() functions. These warnings are reported by gcc 15
which defaults to the C23 standard.
The strchr() and strstr() functions return pointers into const strings,
so the receiving variables must be declared as const char *.
Karel Zak [Thu, 27 Nov 2025 09:32:15 +0000 (10:32 +0100)]
Merge branch 'lsfd--tun-netns' of https://github.com/masatake/util-linux
* 'lsfd--tun-netns' of https://github.com/masatake/util-linux:
lsfd: add TUN.DEVNETNS column
tests: (lsfd::mkfds-cdev-tun,refactor) make the case extensible
lsfd: (doc) fix English in SOCK.NETNS description
lsfd: (cleanup) add missing "break" in a case statement
lsfd: (cleanup) return 0 instead of false
lsfd: (refactor) introduce tundata struct
Karel Zak [Thu, 27 Nov 2025 09:27:07 +0000 (10:27 +0100)]
lib, lscpu: fix const qualifier discarded warnings in bsearch
Fix compilation warnings from newer compilers with stricter
const-correctness checks. When bsearch() searches in const arrays,
the result pointer must also be const to avoid discarding the
const qualifier.
Fixed in:
- lib/color-names.c: searching in static const basic_schemes[]
- sys-utils/lscpu-cputype.c: searching in const pattern arrays
The warnings were:
lib/color-names.c:62:13: error: assignment discards 'const'
qualifier from pointer target type
[-Werror=discarded-qualifiers]
This feature helps users inspect target processes, containers, and/or
VMs with tools such as tcpdump, wireshark, or ip-link.
However, I found a case where the device name was not sufficient.
pasta (https://passt.top/) provides networking for rootless
containers. It creates a tap device whose name matches the name of a
network device on the host:
$ ip link show ens8191
5: ens8191: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 ...
$ ethtool -i ens8191 | head -1
driver: atlantic
$ podman exec 9fbbed215871 ip link show ens8191
2: ens8191: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 65520 ...
$ podman exec 9fbbed215871 ethtool -i ens8191 | head -1
driver: tun
A name alone is not enough to identify a network device on the system.
With this change, lsfd reports the network namespace to which the
tun/tap device belongs:
Karel Zak [Thu, 20 Nov 2025 12:34:23 +0000 (13:34 +0100)]
Merge branch 'PR/mountpoint-statmount' of https://github.com/karelzak/util-linux-work
* 'PR/mountpoint-statmount' of https://github.com/karelzak/util-linux-work:
mountpoint: use single libmount cache for all path resolutions
mountpoint: add --show option to print mountpoint path
mountpoint: use statmount() syscall on modern kernels
Karel Zak [Wed, 19 Nov 2025 12:46:40 +0000 (13:46 +0100)]
mountpoint: use single libmount cache for all path resolutions
Move libmount cache initialization to main() and pass it through
the control structure. This allows the cache to be reused across
all mnt_resolve_path() calls, reducing allocations.
Also add cleanup section in main() with goto labels for proper
resource deallocation in a single location.
Karel Zak [Wed, 19 Nov 2025 12:32:25 +0000 (13:32 +0100)]
mountpoint: add --show option to print mountpoint path
Add a new --show option that prints the actual mountpoint path for
a given directory or file. This is useful for:
- Resolving any path to its containing mountpoint
- Finding the canonical mountpoint path when symlinks are involved
- Determining the mountpoint from paths within filesystems
The option requires kernel support for statmount(2) (Linux 6.8+).
On older kernels without statmount support, the option fails with
an error message, as the /proc/self/mountinfo fallback cannot
resolve arbitrary paths to their containing mountpoint.
The --show option always returns EXIT_SUCCESS (0) when it successfully
finds the mountpoint, regardless of whether the given path itself is
a mountpoint or not.
Addresses: https://github.com/util-linux/util-linux/issues/3806 Signed-off-by: Karel Zak <kzak@redhat.com>
Karel Zak [Wed, 19 Nov 2025 12:01:02 +0000 (13:01 +0100)]
mountpoint: use statmount() syscall on modern kernels
Improve mountpoint(1) to use the modern statmount() system call
(available since Linux 6.8) instead of parsing /proc/self/mountinfo.
- Works without /proc mounted on modern kernels
- More efficient than parsing /proc/self/mountinfo
- Better detection of bind mounts via statmount()
- Graceful fallback maintains compatibility
Addresses: https://github.com/util-linux/util-linux/issues/3806 Signed-off-by: Karel Zak <kzak@redhat.com>
Karel Zak [Wed, 12 Nov 2025 11:08:39 +0000 (12:08 +0100)]
Merge branch 'PR/chmem-dynamic-configuration' of https://github.com/karelzak/util-linux-work
* 'PR/chmem-dynamic-configuration' of https://github.com/karelzak/util-linux-work:
tests: update lsmem outputs
lsmem: use xstrncpy()
lsmem,chmem: add configure/deconfigure bash completion options
lsmem: add doc for dynamic (de)configuration and memmap-on-memory support
chmem: add chmem documentation for dynamic (de)configuration of memory
chmem: add support for dynamic (de)configuration of hotplug memory
lsmem: add support to display dynamic (de)configuration of memory
lsmem: display global memmap on memory parameter
Karel Zak [Mon, 10 Nov 2025 11:43:57 +0000 (12:43 +0100)]
Merge branch 'fallocate' of https://github.com/t-8ch/util-linux
* 'fallocate' of https://github.com/t-8ch/util-linux:
tests: (swaplabel) don't create test image with truncate(1)
fallocate: require posix_fallocate() from libc
fallocate: drop syscall() fallback for fallocate()
build: simplify checks for fallocate() and posix_fallocate()
tests: (swaplabel) don't create test image with truncate(1)
truncate(1) can create holes in the file. These will trigger a warning
in mkswap(1), failing the testsuite. Given that fallocate(1) now alway
supports posix_fallocate() which works on all filesystems, truncate(1)
is unnecessary anyways.
Reported-by: Christian Hesse <mail@eworm.de> Signed-off-by: Thomas Weißschuh <thomas@t-8ch.de>