* add UL_ENABLE_ALIAS(NAME, MASTERNAME) to initialize $enable_<name>
according to MASTERNAME. Note that we have to use $build_<mastername>,
the $enable_<mastername> is just AC_ARG_ENABLE() stuff only. The
$build_ is evaluated and modified by our UL_...() functions.
* add enable-schedutils.conf to have build-system regression test for
this use-case
Addresses: https://github.com/karelzak/util-linux/issues/415 Signed-off-by: Karel Zak <kzak@redhat.com>
Carlos Santos [Wed, 8 Feb 2017 15:27:36 +0000 (13:27 -0200)]
build-sys: improve detection of the "isnan" function in uClibc
Since commit beceb14b450ded6560ed743634a5e80604a8edf3, MATH_LIBS is set
to "-lm" when the isnan function is detected. In uClibc, however, isnan
is a macro that calls __isnan, __isnanf, or __isnanl, depending on the
size of the argument (double, float or long double).
Stanislav Brabec [Mon, 30 Jan 2017 16:01:50 +0000 (17:01 +0100)]
lscpu: Detect Windows Subsystem for Linux
Windows 10 implements Windows Subsystem for Linux (WSL).
WSL does not implement support for SIGSEGV handler, which is used inside
is_vmware_platform(). As a result, lscpu crashes there.
Implement WSL detection, and as a side effect, work around the crash.
Note that none of existing virtualization types exactly matches.
But the the closest would be "container".
References:
Provide a way to positively detect WSL from an app compiled on Linux.
https://github.com/Microsoft/BashOnWindows/issues/423
missing support for SIGSEGV handler
https://github.com/Microsoft/BashOnWindows/issues/1637
Stanislav Brabec [Wed, 25 Jan 2017 17:30:26 +0000 (18:30 +0100)]
fstrim: de-duplicate btrfs sub-volumes
There was a comparison of roots in uniq_fs_source_cmp(). As we care only on
device names, comparing roots makes only a little sense, and it breaks on btrfs.
As a result, FITRIM ioctl() is called for each subvolume. But by design, only
one TRIM is needed for the whole btrfs volume.
Remove it to be able to de-duplicate btrfs subvolumes.
Karel Zak [Sat, 28 Jan 2017 11:39:52 +0000 (12:39 +0100)]
logger: support sub-trees in the ID for RFC5424
The current code supports <name>@<digit> only, but we also need
<name>@<digit>.<digit>[. ...]
RFC5424: 7.2.2 enterpriseId:
In general, only the IANA-assigned private enterprise number is
needed (a single number). An enterprise might decide to use
sub-identifiers below its private enterprise number. If sub-
identifiers are used, they MUST be separated by periods and be
represented as decimal numbers. An example for that would be
"32473.1.2".
Addresses: https://github.com/karelzak/util-linux/issues/406 Signed-off-by: Karel Zak <kzak@redhat.com>
Alden Tondettar [Tue, 24 Jan 2017 06:28:00 +0000 (23:28 -0700)]
libblkid: Fix out of bounds reads on bad GPT header
If a GUID Partition Table claims to have more than 2**25 entries, or if the
size of each entry is not exactly 128 bytes, libblkid can read out of bounds
and segfault. Perform the appropriate checks.
[kzak@redhat.com: - fix typo]
Signed-off-by: Alden Tondettar <alden.tondettar@gmail.com> Signed-off-by: Karel Zak <kzak@redhat.com>
Carlos Santos [Thu, 19 Jan 2017 19:27:37 +0000 (17:27 -0200)]
build-sys: fix compilation with ncurses and uClibc or musl libc
Compiling util-linux with musl and uClibc-ng toolchains when wide-char
support is not enabled in ncurses results in compilation failures with
the following message:
error: two or more data types in declaration specifiers
#define
wchar_t char
The problem occurs because util-linux #defines its own wchar_t (as char)
when configured without widechar support. This conflicts with definition
of wchar_t contained in stddef.h.
This error can be reproduced running "<toolchain-cc -o test test.c" with
the following test program:
Stanislav Brabec [Tue, 10 Jan 2017 12:54:17 +0000 (13:54 +0100)]
If mtab support is disabled, disable ro/rw mtab checks
Commit f9906424 introduced a check that should prevent different information in
mtab and /proc/mounts. The check can require significant amount of time, and for
systems without mtab support it has no sense.
Execute this code only on systems with mtab.
When a systems with large number of nodes (thousands) mount the filesystems
simultaneously, the time required for serialization causes the utimensat() to
take a large amount of time (tens of minutes) when a large number of nodes are
simultaneously updating the timestamp.
Karel Zak [Mon, 9 Jan 2017 12:28:24 +0000 (13:28 +0100)]
libsmartcols: add scols_cell_get_alignment()
Just to hide that we use cell flags (bitwise operations) to define
cell content alignment. The patch also more explicitly specifies the
flags in the header file.
The alignment is evaluated in the order: right, center, left. The
default is left.
Note that SCOLS_CELL_FL_* are used for for table title only.
v2.29.1: function not exported by API Signed-off-by: Karel Zak <kzak@redhat.com>
Nate Clark [Wed, 4 Jan 2017 20:21:17 +0000 (15:21 -0500)]
libblkid/minix: Sanity check superblock s_state for v 1 and 2
Swap devices with specific values in the uuid can look like minix
devices to blkid. Add an extra check to make sure the state of the
filesystem has valid state flags.
Nate Clark [Wed, 4 Jan 2017 20:24:32 +0000 (15:24 -0500)]
libblkid/minix: Use same checks for version 3
fsck.minix performs the same sanity checks on all versions of the
superblock. Update the probe to perform the same sanity checks so it is
less likely a different type of filesystem will be identified as minix.
Nate Clark [Wed, 4 Jan 2017 20:24:22 +0000 (15:24 -0500)]
libblkid/minix: Match minix superblock types
All of the types in the minix super block are unsigned but in
probe_minix they were being treated as signed. This would cause some of
the extra sanity checks to pass on a non minix device. The types were
updated to match the return types of the helper functions in
disk-utils/minix_programs.h
Nate Clark [Wed, 4 Jan 2017 17:31:37 +0000 (12:31 -0500)]
disk-utils/mkfs.minix: Set ninodes after checking max
ninodes in the superblock needs to be set after inodes is checked
against MINIX_MAX_INODES otherwise a value larger than MINIX_MAX_INODES
can be attempted to be stored in the superblock.
Without this change the command "mkfs.minix -2 -i 65530 <dev>" would
write a minix superblock with ninodes set to 0.
Karel Zak [Fri, 16 Dec 2016 11:46:45 +0000 (12:46 +0100)]
findmnt: error on --target /non-exist
The original --target implementation (< v2.27) has been based on
stat(), so it was usable for valid paths only.
The new implementation is based on search in the mountinfo file, so it
works for arbitrary crazy path. This is not backwardly compatible and
if the path does not exist then it still returns at least root
directory mount entry.
This patch forces mnt_table_find_mountpoint() to check if the path is
valid before we search in the mountinfo file.
Karel Zak [Thu, 15 Dec 2016 13:40:26 +0000 (14:40 +0100)]
more: avoid double free() on exit
On 'q' command more(1) calls end_it() function with _exit(). The
_exit() may suspend program execution due to pending I/O on very
loaded server. In this time SIGINT may be delivered due to impatient
user who will press ^C.
And then end_it() cleanup function may be executed by signal handler
too. The result is double free()...
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1403971 Signed-off-by: Karel Zak <kzak@redhat.com>
Ruediger Meier [Wed, 7 Dec 2016 19:39:02 +0000 (20:39 +0100)]
build-sys: don't clean *.img files
Don't know why this was added in d78df0ac but it can't be right that
libmount/python removes these files in the toplevel builddir. Moreover
I've never seen such *.img files appearing during build at all.
Michael Kerrisk [Mon, 5 Dec 2016 06:28:09 +0000 (07:28 +0100)]
docs: renice(1): Add SEE ALSO entry for sched(7)
The sched(7) page as of the most recent release contains detailed
information on the 'nice' value, including a discussion of
autogrouping, which has surprising interactions with the process
nice value.
Michael Kerrisk [Sun, 4 Dec 2016 19:34:54 +0000 (20:34 +0100)]
docs: various pages: Use consistent terminology (set-user-ID and set-group-ID)
Use consistent terminology for set-user-ID and set-group-ID bits.
There's much inconsistency in the pages. "suid",
"set-user-identifier", "setuid". Stick with one terminology,
"set-user-ID" and set-grout-ID, as suggested in man-pages(7).
Michael Kerrisk [Sat, 3 Dec 2016 20:13:59 +0000 (21:13 +0100)]
docs: various pages: Format pathnames as italic (.I)
In the majority of pages, pathnames are formatted as Italic,
which is the norm. However, there are several cases where they
are formatted as bold. This patch fixes a number of those
exceptions.
Signed-off-by: Michael Kerrisk <mtk.man-pages@gmail.com>
Michael Kerrisk [Fri, 9 Dec 2016 12:32:34 +0000 (13:32 +0100)]
docs: renice(1): Remove obsolete BUGS text
Already at least as far back as util-linux 2.2, renice uses
getpriority(2) to fetch the process's old nice value. Thus,
the "problem" discussed in this BUGS note disappeared long ago.
This is trivially demonstrable:
$ sleep 100 &
[1] 24322
$ renice -n 5 24322
24322 (process ID) old priority 0, new priority 5
$ renice -n 10 24322
24322 (process ID) old priority 5, new priority 10
Rather than trying to explain the ancient problem (20 years old?),
just kill this text.
Signed-off-by: Michael Kerrisk <mtk.man-pages@gmail.com> Signed-off-by: Karel Zak <kzak@redhat.com>
Michael Kerrisk [Fri, 9 Dec 2016 12:25:20 +0000 (13:25 +0100)]
docs: renice(1): Rework discussion of unprivileged users,
The BUGS section describing the limitations on what an unprivileged
user may do to the nice value is outdated, given the kernel changes
that added RLIMIT_NICE in Linux 2.6.12. So, remove that text.
The revised details for modern Linux were partially covered in NOTES,
but there were also inaccuracies there (and the use of the word
"monotonically" was unneeded). In particular, the point is that
unprivileged users can only increase the nice value. There is no
restriction particular to the range 0..+19. So, for example, the
following scenario is possible:
1. Superuser sets the nice value of an unprivileged user's
process to -20.
2. The unprivileged user can now renice that process to (say) -10.
Signed-off-by: Michael Kerrisk <mtk.man-pages@gmail.com> Signed-off-by: Karel Zak <kzak@redhat.com>
Karel Zak [Fri, 9 Dec 2016 08:47:33 +0000 (09:47 +0100)]
hwclock: don't check for permissions
The right place to verify user permissions is kernel. The current
situation is too strict (due to previous attempts to use hwclock as
suid that has never been supported).
Previously (and as documented in the manpage) the default policy
was SCHED_RR. Now it's implicitly SCHED_OTHER (0) as the value
is not initialized explicitly anymore.
Test-command: chrt 90 echo hello
Reported-by: Patrick Pelissier <patrick.pelissier@gmail.com>
Addresses: http://bugs.debian.org/846572 Signed-off-by: Andreas Henriksson <andreas@fatal.se>
Provide better cross references for namespace concepts
For each namespace that is discussed, add more explicit
references to the corresponding clone(2) flags and
add references to relevant section 7 namespace pages.
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>