Michal Sekletar [Mon, 17 May 2021 13:54:10 +0000 (15:54 +0200)]
test/udev-test.pl: drop test cases that add mutliple devices
[msekleta: It is easier to delete test-cases that would make
udev test fail. Once we reintroduce the fix for link_update()
we will revert this commit.]
Related: #
1963980
Michal Sekletar [Mon, 17 May 2021 13:50:31 +0000 (15:50 +0200)]
Revert "udev: make algorithm that selects highest priority devlink less susceptible to race conditions"
This reverts commit
1d5f966c1758eb620755fcae54abd07a1ac36d3d.
Related: #
1963980
Michal Sekletar [Mon, 17 May 2021 13:49:08 +0000 (15:49 +0200)]
Revert "udev: run link_update() with increased retry count in second invocation"
This reverts commit
1f3165bda13c8572c8c31d23c998835c4e2ad8f3.
Related: #
1963980
Lennart Poettering [Mon, 4 Feb 2019 09:23:43 +0000 (10:23 +0100)]
pam-systemd: use secure_getenv() rather than getenv()
And explain why in a comment.
(cherry picked from commit
83d4ab55336ff8a0643c6aa627b31e351a24040a)
CVE-2019-3842
Resolves: #
1687514
Michal Sekletar [Thu, 4 Mar 2021 16:35:22 +0000 (17:35 +0100)]
udev: run link_update() with increased retry count in second invocation
In PR #17431 we have introduced retry loop in link_update() in order to
maximize the chance that we end up with correct target when there are
multiple contenders for given symlink.
Number of iterations in retry loop is either 1 or
LINK_UPDATE_MAX_RETRIES, depending on the value of 'initialized' db
flag. When device appears for the first time we need to set the
flag before calling link_update() via update_devnode() for the second
time to make sure we run the second invocation with higher retry loop
counter.
(cherry picked from commit
996c83903da5bf8b371314b4207ff97afeef65a4)
Related: #
1931947
Michal Sekletár [Thu, 9 Jul 2020 16:16:44 +0000 (18:16 +0200)]
core: prevent excessive /proc/self/mountinfo parsing
(cherry picked from commit
d586f642fd90e3bb378f7b6d3e3a64a753e51756)
Resolves: #
1819868
Michal Sekletár [Mon, 23 Nov 2020 17:04:57 +0000 (18:04 +0100)]
test: add ratelimiting test
(Taken from Michal's #17274 by Lennart, and slightly adjusted)
(cherry picked from commit
68d890651781904a4c762ac866af36e30c4f7ff8)
Related: #
1819868
Lennart Poettering [Mon, 23 Nov 2020 17:02:40 +0000 (18:02 +0100)]
sd-event: add ability to ratelimit event sources
Let's a concept of "rate limiting" to event sources: if specific event
sources fire too often in some time interval temporarily take them
offline, and take them back online once the interval passed.
This is a simple scheme of avoiding starvation of event sources if some
event source fires too often.
This introduces the new conceptual states of "offline" and "online" for
event sources: an event source is "online" only when enabled *and* not
ratelimited, and offline in all other cases. An event source that is
online hence has its fds registered in the epoll, its signals in the
signalfd and so on.
(cherry picked from commit
b6d5481b3d9f7c9b1198ab54b54326ec73e855bf)
Related: #
1819868
Zbigniew Jędrzejewski-Szmek [Tue, 10 Nov 2020 11:57:34 +0000 (12:57 +0100)]
sd-event: increase n_enabled_child_sources just once
Neither source_child_pidfd_register() nor event_make_signal_data() look at
n_enabled_child_sources.
(cherry picked from commit
ac9f2640cb9c107b43f47bba7e068d3b92b5337b)
Related: #
1819868
Zbigniew Jędrzejewski-Szmek [Tue, 10 Nov 2020 09:38:37 +0000 (10:38 +0100)]
sd-event: update state at the end in event_source_enable
Coverity in CID#
1435966 was complaining that s->enabled is not "restored" in
all cases. But the code was actually correct, since it should only be
"restored" in the error paths. But let's still make this prettier by not setting
the state before all operations that may fail are done.
We need to set .enabled for the prioq reshuffling operations, so move those down.
No functional change intended.
(cherry picked from commit
d2eafe61ca07f8300dc741a0491a914213fa2b6b)
Related: #
1819868
Lennart Poettering [Mon, 23 Nov 2020 16:49:27 +0000 (17:49 +0100)]
sd-event: remove earliest_index/latest_index into common part of event source objects
So far we used these fields to organize the earliest/latest timer event
priority queue. In a follow-up commit we want to introduce ratelimiting
to event sources, at which point we want any kind of event source to be
able to trigger time wakeups, and hence they all need to be included in
the earliest/latest prioqs. Thus, in preparation let's make this
generic.
No change in behaviour, just some shifting around of struct members from
the type-specific to the generic part.
(cherry picked from commit
f41315fceb5208c496145cda2d6c865a5458ce44)
Related: #
1819868
Lennart Poettering [Mon, 23 Nov 2020 16:47:16 +0000 (17:47 +0100)]
sd-event: follow coding style with naming return parameter
(cherry picked from commit
cad143a8f26976a23e634d5e1ecfb7d7ba75c3bf)
Related: #
1819868
Lennart Poettering [Mon, 23 Nov 2020 14:38:00 +0000 (15:38 +0100)]
sd-event: ref event loop while in sd_event_prepare() ot sd_event_run()
sd_event_prepare() invokes callbacks that might drop the last user ref
on our event loop. Let's make sure we keep an explicit ref around it, so
that we won't end up with an invalid pointer. Similar in sd_event_run().
Basically, any function that is publically callable that might end up
invoking callbacks should ref the relevant objects to be protected
against callbacks destroying these objects while we still want to access
them. We did this correctly in sd_event_dispatch() and sd_event_loop(),
but these are not the only ones which are callable from the outside.
(cherry picked from commit
f814c871e65df8552a055dd887bc94b074037833)
Related: #
1819868
Lennart Poettering [Wed, 30 Oct 2019 19:26:50 +0000 (20:26 +0100)]
sd-event: refuse running default event loops in any other thread than the one they are default for
(cherry picked from commit
e544601536ac13a288d7476f4400c7b0f22b7ea1)
Related: #
1819868
Lennart Poettering [Mon, 23 Nov 2020 14:33:50 +0000 (15:33 +0100)]
sd-event: let's suffix last_run/last_log with "_usec"
Otherwise it's a bit confusing what this is about: two timestamps.
(cherry picked from commit
e6a7bee538f6638c2d5ca2afc66bf47cba3f075c)
Related: #
1819868
Vito Caputo [Tue, 1 Dec 2020 08:26:54 +0000 (00:26 -0800)]
sd-event: fix delays assert brain-o (#17790)
s/sizeof/ELEMENTSOF/
Bug introduced in
34b87517749caa4142b19eb3c63bdf349fafbc49.
(cherry picked from commit
cb9d621ebbfa30bbd620c17e143daeb0d78c12f0)
Related: #
1819868
Lennart Poettering [Mon, 23 Nov 2020 14:25:35 +0000 (15:25 +0100)]
sd-event: split out code to add/remove timer event sources to earliest/latest prioq
Just some refactoring that makes code prettier, and will come handy
later, because we can reuse these functions at more places.
(cherry picked from commit
1e45e3fecc303e7ae9946220c742f69675e99c34)
Related: #
1819868
Lennart Poettering [Mon, 23 Nov 2020 10:40:24 +0000 (11:40 +0100)]
sd-event: split clock data allocation out of sd_event_add_time()
Just some simple refactoring, that will make things easier for us later.
But it looks better this way even without the later function reuse.
(cherry picked from commit
41c63f36c3352af8bebf03b6181f5d866431d0af)
Related: #
1819868
Lennart Poettering [Mon, 23 Nov 2020 10:39:40 +0000 (11:39 +0100)]
sd-event: mention that two debug logged events are ignored
(cherry picked from commit
f80a5d6a86dc2346f406ee086ba179879afaab70)
Related: #
1819868
Lennart Poettering [Fri, 23 Oct 2020 19:21:58 +0000 (21:21 +0200)]
sd-event: split out enable and disable codepaths from sd_event_source_set_enabled()
So far half of sd_event_source_set_enabled() was doing enabling, the
other half was doing disabling. Let's split that into two separate
calls.
(This also adds a new shortcut to sd_event_source_set_enabled(): if the
caller toggles between "ON" and "ONESHOT" we'll now shortcut this, since
the event source is already enabled in that case and shall remain
enabled.)
This heavily borrows and is inspired from Michal Sekletár's #17284
refactoring.
(cherry picked from commit
ddfde737b546c17e54182028153aa7f7e78804e3)
Related: #
1819868
Michal Sekletár [Fri, 23 Oct 2020 16:29:27 +0000 (18:29 +0200)]
sd-event: split out helper functions for reshuffling prioqs
We typically don't just reshuffle a single prioq at once, but always
two. Let's add two helper functions that do this, and reuse them
everywhere.
(Note that this drops one minor optimization:
sd_event_source_set_time_accuracy() previously only reshuffled the
"latest" prioq, since changing the accuracy has no effect on the
earliest time of an event source, just the latest time an event source
can run. This optimization is removed to simplify things, given that
it's not really worth the effort as prioq_reshuffle() on properly
ordered prioqs has practically zero cost O(1)).
(Slightly generalized, commented and split out of #17284 by Lennart)
(cherry picked from commit
e1951c16a8fbe5b0b9ecc08f4f835a806059d28f)
Related: #
1819868
Martin Wilck [Tue, 24 Apr 2018 19:40:23 +0000 (21:40 +0200)]
test/sys-script.py: add missing DEVNAME entries to uevents
Resolves: #
1931947
Michal Sekletar [Tue, 2 Mar 2021 17:57:59 +0000 (12:57 -0500)]
Revert "test: add test cases for empty string match" and "test: add test case for multi matches when use ||"
This effectively reverts commits
03bc565e6e3249385c4e1ca0ae27670ca2ad9a41
and
03b766cc937ffa4dcb7cfb25b2ac20d8a00cb6db.
Resolves: #
1931947
Zbigniew Jędrzejewski-Szmek [Tue, 17 Nov 2020 16:13:31 +0000 (17:13 +0100)]
test/udev-test: gracefully exit when imports fail
In Fedora rawhide various perl modules are now available as separate
packages that are not pulled in by dependencies. If we don't have some
package, skip the tests.
This ugly code is apparently the way to do conditional imports:
https://www.cs.ait.ac.th/~on/O/oreilly/perl/cookbook/ch12_03.htm.
(cherry picked from commit
d40763838278246e2073d15ca927ee700e583afc)
Related: #
1642728
Martin Wilck [Thu, 26 Apr 2018 12:07:27 +0000 (14:07 +0200)]
test/udev_test.pl: add "expected good" count
Since 'test/udev-test.pl: count "good" results', we know how many
checks succeeded. Add an "expected good" count to make that number
more meaningful.
(cherry picked from commit
cbeb23d863d540408cd1fb274d78213f59639df2)
Related: #
1642728
Martin Wilck [Thu, 26 Apr 2018 11:25:11 +0000 (13:25 +0200)]
test/udev-test.pl: suppress umount error message at startup
umount emits an error message "no mount point specified" if the
tmpfs isn't mounted yet, which is the normal case.
Suppress that by redirecting stderr.
(cherry picked from commit
f1cb0860549e775be5f91237b5a3b97698dd14dd)
Related: #
1642728
Martin Wilck [Wed, 25 Apr 2018 07:54:26 +0000 (09:54 +0200)]
test/udev-test.pl: generator for large list of block devices
Manually listing all devices in the test definition becomes cumbersome with
lots of devices. Add a function that scans on all block devices in
the test sysfs and generates a list of devices to test.
(cherry picked from commit
eb44d715ebee2fe11288433b99f8e1dc5fdac84a)
Related: #
1642728
Martin Wilck [Tue, 24 Apr 2018 20:24:43 +0000 (22:24 +0200)]
test/udev-test.pl: add repeat count
for easier reproduction of sporadic test failures.
(cherry picked from commit
2ab0a8d00bc48d3531e953d938db889d8a932d65)
Related: #
1642728
Martin Wilck [Tue, 24 Apr 2018 20:04:55 +0000 (22:04 +0200)]
tests/udev-test.pl: add multiple device test
Add 4 new tests using multiple devices. Number 2-4 use many
devices claiming the same symlink, where only one device has
a higher priority thatn the others. They fail sporadically with
the current code, if a race condition causes the symlink to point
to the wrong device. Test 4 is like test 2 with sleeps in between,
it's much less likely to fail.
(cherry picked from commit
4a0ec82daf32446519e1d86329bb802325b82104)
Related: #
1642728
Martin Wilck [Tue, 24 Apr 2018 18:55:01 +0000 (20:55 +0200)]
test/udev-test.pl: count "good" results
This is helpful to catch possible regressions in the test.
Also, don't count wait() errors, they are likely not udev errors.
(cherry picked from commit
b95c43982ab7d0253b552ad56cffb3d68fcbb4f6)
Related: #
1642728
Martin Wilck [Tue, 24 Apr 2018 16:30:09 +0000 (18:30 +0200)]
test/udev-test.pl: merge import parent tests into one
As we can test multiple devices and multiple links per device
in one test now, these two tests can be merged into one.
(cherry picked from commit
a96cd21d31cb7af211862768e133b50b085634e7)
Related: #
1642728
Martin Wilck [Tue, 24 Apr 2018 16:27:25 +0000 (18:27 +0200)]
test/udev-test.pl: merge "space and var with space" tests
As we can check multiple links in a single test now, these 3
tests can be merged into one.
(cherry picked from commit
2084fe0d3290c525ecb9faa07d07c3abc2488e59)
Related: #
1642728
Martin Wilck [Tue, 24 Apr 2018 16:16:59 +0000 (18:16 +0200)]
test/udev-test.pl: remove bogus rules from magic subsys test
These rules have survived from an ancient version of the code
and save no purpose any more.
(cherry picked from commit
86634df43b715f3f77c7de73a3ef6566e5cdf571)
Related: #
1642728
Martin Wilck [Tue, 24 Apr 2018 16:09:50 +0000 (18:09 +0200)]
test/udev-test.pl: Make some tests a little harder
Add some rules that make it a bit harder to pass, mainly the
non-existence checks.
(cherry picked from commit
06d4d4e24e7d0b51120b165e540d278842e8b1a3)
Related: #
1642728
Martin Wilck [Tue, 24 Apr 2018 16:08:18 +0000 (18:08 +0200)]
test/udev-test.pl: last_rule is unsupported
the "last_rule" option hasn't been supported for some time.
Therefore this test fails if a "not_exp_links" attribute is added,
as it should be. Mark it appropriately.
(cherry picked from commit
17cce031531a5d3f38a27374c99d1bdba5959dbd)
Related: #
1642728
Martin Wilck [Tue, 24 Apr 2018 15:57:47 +0000 (17:57 +0200)]
test/udev-test.pl: fix wrong test descriptions
udev hasn't supported renaming device nodes for some time.
(cherry picked from commit
46bc71b2b73f8a1e27dc5e142730e9877dd05e3e)
Related: #
1642728
Martin Wilck [Tue, 24 Apr 2018 15:15:58 +0000 (17:15 +0200)]
test/udev-test.pl: allow checking multiple symlinks
Instead of testing the existence or non-exisitence of just a single
symlink, allow testing of several links per device.
Change the test definitions accordingly.
(cherry picked from commit
e62acc3159935781f05fa59c48e5a74e85c61ce2)
Related: #
1642728
Martin Wilck [Tue, 24 Apr 2018 08:50:24 +0000 (10:50 +0200)]
test/udev-test.pl: test correctness of symlink targets
Test if symlinks are created correctly by comparing the symlink
targets to the devnode path. This implies (for the symlink) that
major/minor numbers and permissions are correct, as we have tested
that on the devnode already.
(cherry picked from commit
997683c8f152e1c139a7ce537de81a0aeae4627f)
Related: #
1642728
Martin Wilck [Tue, 24 Apr 2018 07:38:26 +0000 (09:38 +0200)]
test/udev-test.pl: use computed devnode name
More often than not, the created devnode is the basename of the
sysfs entry. The "devnode" device may be used to override the
auto-detected node name.
Permissions and major/minor number are now verified on the devnode
itself, not on symlinks.
For those tests where exp_name is set to the computed devnode name,
the explicit "exp_name" can be removed. "exp_name" is only required for
symlinks.
This allows separate testing for devnodes and symlinks an a follow-up
patch.
(cherry picked from commit
f0dccf01a7b4e72278e14effd74782ea83d0a73b)
Related: #
1642728
Martin Wilck [Mon, 23 Apr 2018 19:59:05 +0000 (21:59 +0200)]
test/udev-test.pl: allow concurrent additions and removals
Allow testing cases where multiple devices are added and removed
simultaneously. Tests are started as synchronously as possible using a
semaphore, in order to test possible race conditions. If this isn't desired,
the test parameter "sleep_us" can be set to the number of microseconds to wait
between udev invocations.
(cherry picked from commit
09a4062d70b3a10d022e40066e2adf09df05bbbc)
Related: #
1642728
Martin Wilck [Mon, 23 Apr 2018 19:58:12 +0000 (21:58 +0200)]
test/udev-test.pl: create rules only once
It's not necessary to write the rules for every udev run, as we
now may have many (rather than just 2) per test.
(cherry picked from commit
af7ee3eae689f9c31b49ea13758ad9c901918ce3)
Related: #
1642728
Martin Wilck [Fri, 20 Apr 2018 20:38:30 +0000 (22:38 +0200)]
test/udev-test.pl: allow multiple devices per test
Allow testing cases where multiple devices are added and removed.
This implies a change of the data structure: every test allows
for multiple devices to be added, and "exp_name" etc. are now properties
of the device, not of the test.
(cherry picked from commit
255c05b72455dcad1b5552d12a813b31f68201a7)
Related: #
1642728
Zbigniew Jędrzejewski-Szmek [Fri, 4 Sep 2020 16:09:20 +0000 (18:09 +0200)]
udev-test: do not rely on "mail" group being defined
"audio" should be there, at least we declare it. "mail" nowadays is less
likely to exist than in the past.
Fixes one of the items in #16942.
(cherry picked from commit
a9030b81c154c3ec92227d04cad6b13cc1125608)
Related: #
1642728
gaoyi [Sun, 12 Jul 2020 07:27:45 +0000 (03:27 -0400)]
test: add test case for multi matches when use "||"
Signed-off-by: gaoyi <ymuemc@163.com>
(cherry picked from commit
0d3a8bc7ebd76591e14f7098b4266fd2065ac4db)
Related: #
1642728
Yu Watanabe [Wed, 11 Sep 2019 00:06:15 +0000 (09:06 +0900)]
test: add test cases for empty string match
(cherry picked from commit
48d26c90852c22ec94be961f5fbdcf462bb9a6e8)
Related: #
1642728
Dan Streetman [Fri, 5 Jul 2019 15:24:55 +0000 (11:24 -0400)]
test/udev-test.pl: cleanup if skipping test
In Ubuntu CI, udev-test.pl is run from the debian/test/udev script,
in a test dir created for it; but udev-test.pl setup mounts a
dir, so if it doesn't cleanup/unmount before exiting, the test dir
autopkgtest created for it can't be removed, and autopkgtest
aborts the entire test suite, for example this output (from a
test run inside an armhf container):
autopkgtest [12:45:36]: test udev: [-----------------------
umount: test/tmpfs: no mount point specified.
mknod: test/tmpfs/dev/null: Operation not permitted
unable to create test/tmpfs/dev/null at ./udev-test.pl line 1611.
Failed to set up the environment, skipping the test at ./udev-test.pl line 1731.
autopkgtest [12:45:41]: test udev: -----------------------]
autopkgtest [12:45:44]: test udev: - - - - - - - - - - results - - - - - - - - - -
udev FAIL non-zero exit status 77
rm: cannot remove '/tmp/autopkgtest.ocPFA6/autopkgtest_tmp/test/tmpfs': Device or resource busy
autopkgtest [12:46:22]: ERROR: "rm -rf /tmp/autopkgtest.ocPFA6/udev-artifacts /tmp/autopkgtest.ocPFA6/autopkgtest_tmp" failed with stderr "rm:
(cherry picked from commit
abb9cc50afb3949c442849f43301fb33578f3888)
Related: #
1642728
Yu Watanabe [Thu, 21 Feb 2019 09:04:12 +0000 (18:04 +0900)]
test-udev: fix alignment and drop unnecessary white spaces
(cherry picked from commit
3dd2d524141d09d57443ae339e1a77d7ce40f847)
Related: #
1642728
Yu Watanabe [Thu, 21 Feb 2019 09:03:32 +0000 (18:03 +0900)]
test-udev: add more tests for line continuation
(cherry picked from commit
84a0819c9d89a2ddb195a5d975ae1fd5c62fde3c)
Related: #
1642728
Yu Watanabe [Tue, 19 Feb 2019 00:22:45 +0000 (09:22 +0900)]
test-udev: add more tests for line continuations and comments
(cherry picked from commit
d35976c670b0e5c2d4081b781e5af88c0689ff00)
Related: #
1642728
Yu Watanabe [Tue, 19 Feb 2019 00:21:42 +0000 (09:21 +0900)]
test-udev: use proper semantics for too long line with continuation
Follow-up for
1e797cf596df50a6bdd8cbf8e9b2467a3a934171.
(cherry picked from commit
e37a5d90b0c624b95f8d0c3400288fec60417ec4)
Related: #
1642728
Yu Watanabe [Mon, 18 Feb 2019 01:38:29 +0000 (10:38 +0900)]
test-udev: add a testcase of too long line
(cherry picked from commit
1e797cf596df50a6bdd8cbf8e9b2467a3a934171)
Related: #
1642728
Alexey Bogdanenko [Tue, 11 Dec 2018 13:55:34 +0000 (16:55 +0300)]
udev-test: check if permitted to create block device nodes
(cherry picked from commit
dbfbc6c4e34366033cb340e8b0c3cbca683ff6f5)
Related: #
1642728
Alexey Bogdanenko [Sat, 8 Dec 2018 12:35:30 +0000 (15:35 +0300)]
udev-test: fix missing directory test/run
Fixes the following error:
Failed to mount test /run: No such file or directory
By the time command "./test-udev check" calls function "fake_filesystems",
directory "test/run" must be present.
(cherry picked from commit
1e5548c0e0962424b6ca5fdfd35c866b70760c8f)
Related: #
1642728
Alexey Bogdanenko [Sat, 8 Dec 2018 08:02:30 +0000 (11:02 +0300)]
udev-test: fix test skip condition
When there is a failure to setup the environment, the following happens:
1. Command "./test-udev check" exits with non-zero code.
2. Perl function "system" returns the code.
3. The code is evaluated as true by Perl.
Then we stop the test.
(cherry picked from commit
7935dae547caf164d807237f1009a9e9fa510337)
Related: #
1642728
Evgeny Vereshchagin [Fri, 9 Nov 2018 03:01:15 +0000 (04:01 +0100)]
udev-test: skip the test only if it can't setup its environment
This is basically a replacement for
0eb3cc88504b5d8f74.
(cherry picked from commit
110a13202eab6d92678abcde08372d4afac1cc45)
Related: #
1642728
Evgeny Vereshchagin [Fri, 9 Nov 2018 02:14:04 +0000 (03:14 +0100)]
udev-test: remove a check for whether the test is run in a container
It's too broad a check that prevents the test from running on Travis CI.
(cherry picked from commit
881886ef08d50951159633248b0f73977c5d6924)
Related: #
1642728
Yu Watanabe [Wed, 7 Nov 2018 05:56:20 +0000 (14:56 +0900)]
Yu Watanabe [Mon, 22 Oct 2018 22:23:01 +0000 (07:23 +0900)]
test: create /dev/null in test-udev.pl
(cherry picked from commit
a41ff38b0999fb83464309a29b8f39450b8d4b85)
Related: #
1642728
Michal Sekletar [Wed, 6 Jan 2021 10:43:50 +0000 (11:43 +0100)]
udev: make algorithm that selects highest priority devlink less susceptible to race conditions
Previously it was very likely, when multiple contenders for the symlink
appear in parallel, that algorithm would select wrong symlink (i.e. one
with lower-priority).
Now the algorithm is much more defensive and when we detect change in
set of contenders for the symlink we reevaluate the selection. Same
happens when new symlink replaces already existing symlink that points
to different device node.
Resolves: #
1642728
Michal Sekletár [Thu, 5 Nov 2020 16:55:25 +0000 (17:55 +0100)]
basic/stat-util: make mtime check stricter and use entire timestamp
Note that st_mtime member of struct stat is defined as follows,
#define st_mtime st_mtim.tv_sec
Hence we omitted checking nanosecond part of the timestamp (struct
timespec) and possibly would miss modifications that happened within the
same second.
(cherry picked from commit
a59b0a9f768f6e27b25f4f1bab6de08842e78d74)
Related: #
1642728
Michal Sekletar [Tue, 5 Jan 2021 11:30:15 +0000 (12:30 +0100)]
udev/net_id: give RHEL-8.4 naming scheme a name
Follow-up for
bb6114af097da0cd9c5081e42db718559130687f
Related: #
1827462
Christian Göttsche [Mon, 6 Jan 2020 14:27:23 +0000 (15:27 +0100)]
selinux: add trigger for policy reload to refresh internal selabel cache
Reload the internal selabel cache automatically on SELinux policy reloads so non pid-1 daemons are participating.
Run the reload function `mac_selinux_reload()` not manually on daemon-reload, but rather pass it as callback to libselinux.
Trigger the callback prior usage of the systemd internal selabel cache by depleting the selinux netlink socket via `avc_netlink_check_nb()`.
Improves:
a9dfac21ec85 ("core: reload SELinux label cache on daemon-reload")
Improves: #13363
(cherry picked from commit
61f3e897f13101f29fb8027e8839498a469ad58e)
Related: #
1888912
Franck Bui [Mon, 2 Jul 2018 08:22:56 +0000 (10:22 +0200)]
selinux: introduce mac_selinux_create_file_prepare_at()
(cherry picked from commit
7e531a5265687aef5177b070c36ca4ceab42e768)
Related: #
1888912
Christian Göttsche [Wed, 27 Nov 2019 18:43:47 +0000 (19:43 +0100)]
core: reload SELinux label cache on daemon-reload
Reloading the SELinux label cache here enables a light-wight follow-up of a SELinux policy change, e.g. adding a label for a RuntimeDirectory.
Closes: #13363
(cherry picked from commit
a9dfac21ec850eb5dcaf1ae9ef729389e4c12802)
Resolves: #
1888912
Franck Bui [Mon, 28 Jan 2019 11:07:37 +0000 (12:07 +0100)]
units: make sure initrd-cleanup.service terminates before switching to rootfs
A follow-up for commit
a8cb1dc3e0fa81aff.
Commit
a8cb1dc3e0fa81aff made sure that initrd-cleanup.service won't be stopped
when initrd-switch-root.target is isolated.
However even with this change, it might happen that initrd-cleanup.service
survives the switch to rootfs (since it has no ordering constraints against
initrd-switch-root.target) and is stopped right after when default.target is
isolated. This led to initrd-cleanup.service entering in failed state as it
happens when oneshot services are stopped.
This patch along with
a8cb1dc3e0fa81aff should fix issue #4343.
Fixes: #4343
(cherry picked from commit
e2c7c94ea35fe7e669afb51bfc2251158b522ea5)
Related: #
1657810
Pavel Hrdina [Wed, 25 Nov 2020 08:05:36 +0000 (09:05 +0100)]
cgroup: Also set blkio.bfq.weight
Commit [1] added a workaround when unified cgroups are used but missed
legacy cgroups where there is the same issue.
[1] <https://github.com/systemd/systemd/commit/
2dbc45aea747f25cc1c3848fded2ec0062f96bcf>
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
(cherry picked from commit
35e7a62ca32a30169a94693b831e53c832251984)
Resolves: #
1657810
David Tardon [Fri, 11 Dec 2020 08:34:19 +0000 (09:34 +0100)]
use link to RHEL-8 docs
RHEL-only
Related: #
1623116
Lennart Poettering [Thu, 8 Nov 2018 08:33:31 +0000 (09:33 +0100)]
unit: make UNIT() cast function deal with NULL pointers
Fixes: #10681
(cherry picked from commit
bbf11206230d1b089118971f98a047151cb5c4fa)
Related: #
1871827
Frantisek Sumsal [Fri, 15 Jan 2021 14:13:53 +0000 (15:13 +0100)]
ci: move jobs from Travis CI to GH Actions
The OSS version of Travis CI is going to be merged with the commercial
one soon, essentially dropping the free tier, so let's move the CI jobs
to GitHub Actions to keep them up.
rhel-only
Related: #
1871827
Frantisek Sumsal [Fri, 15 Jan 2021 12:00:33 +0000 (13:00 +0100)]
ci: use quay.io instead of Docker Hub to avoid rate limits
Docker Hub introduced rate limits for anonymous users (100 requests per
six hours), which break our CI in the busier periods. Let's try to use
the quay.io CentOS image to mitigate this.
rhel-only
Related: #
1871827
Frantisek Sumsal [Fri, 15 Jan 2021 11:51:02 +0000 (12:51 +0100)]
ci: PowerTools repo was renamed to powertools in RHEL 8.3
See: https://wiki.centos.org/Manuals/ReleaseNotes/CentOS8.2011#Yum_repo_file_and_repoid_changes
rhel-only
Related: #
1871827
Lennart Poettering [Wed, 27 May 2020 17:38:38 +0000 (19:38 +0200)]
resolved: tweak cmsg calculation
We ask for the TTL, then have enough space for it.
We probably can drop the extra cmsg space now, but let's figure that out
another time, since the extra cmsg space is used elsewhere in resolved
as well.
(cherry picked from commit
08ab18618ec59022582f1513c0718ba369f5ba85)
Related: #
1887181
Lennart Poettering [Wed, 27 May 2020 17:36:56 +0000 (19:36 +0200)]
core: add new PassPacketInfo= socket unit property
(cherry picked from commit
a3d19f5d99c44940831a33df8b5bece4aaf749f7)
Resolves: #
1887181
Lennart Poettering [Wed, 27 May 2020 17:27:51 +0000 (19:27 +0200)]
socket-util: add generic socket_pass_pktinfo() helper
The helper turns on the protocol specific "packet info" structure cmsg
for three relevant protocols we know.
(cherry picked from commit
35a3eb9bdc95d1e6ba25bc65c78959ea104e45a1)
Related: #
1887181
Lennart Poettering [Thu, 18 Oct 2018 17:48:18 +0000 (19:48 +0200)]
introduce setsockopt_int() helper
As suggested by @heftig:
https://github.com/systemd/systemd/commit/
6d5e65f6454212cd400d0ebda34978a9f20cc26a#commitcomment-
30938667
(cherry picked from commit
2ff48e981e6cd1ccbfae49943274d9c8319a5e5d)
Related: #
1887181
Zbigniew Jędrzejewski-Szmek [Sat, 22 Aug 2020 09:58:15 +0000 (11:58 +0200)]
shared/install: fix preset operations for non-service instantiated units
Fixes https://github.com/coreos/ignition/issues/1064.
(cherry picked from commit
47ab95fe4315b3f7ee5a3694460a744bb88c52fd)
Related: #
1812972
Joerg Behrmann [Tue, 10 Mar 2020 15:34:13 +0000 (16:34 +0100)]
docs: Add syntax for templated units to systemd.preset man page
This documents the syntax
enable template@.service foo bar baz
that was introduced in #9901 to preset templated units.
(cherry picked from commit
1f667d8a7cff4355cd23ebebeb4d7179e3498eb8)
Related: #
1812972
Yu Watanabe [Wed, 29 Aug 2018 14:27:42 +0000 (23:27 +0900)]
test: fix a memleak
Follow-up for #9901.
Fixes #9968.
(cherry picked from commit
efa146369398fdb73f1cd177eb2522822ebf559c)
Related: #
1812972
Ruixin Bao [Sun, 26 Aug 2018 20:00:03 +0000 (20:00 +0000)]
install: small refactor to combine two function calls into one function
Combine consecutive function calls of install_info_discover and
install_info_may_process into one short helper function.
(cherry picked from commit
1e475a0ab4c46eb07f3df3fb24f5a7c3e1fa20b1)
Related: #
1812972
Ruixin Bao [Tue, 21 Aug 2018 20:40:56 +0000 (20:40 +0000)]
install: allow instantiated units to be enabled via presets
This patch implements https://github.com/systemd/systemd/issues/9421.
The .preset file now is able to take a rule in the format of:(e.g)
enable foo@.service bar0 bar1 bar2
In the above example, when preset-all is called, all three instances of
foo@bar0.service, foo@bar1.service and foo@bar2.service will be enabled.
When preset is called on a single service(e.g: foo@bar1.service), only
the mentioned one(foo@bar1.service) will be enabled.
Tests are added for future regression.
(cherry picked from commit
4c9565eea534cd233a913c8c21f7920dba229743)
Resolves: #
1812972
Lennart Poettering [Thu, 30 Apr 2020 16:32:44 +0000 (18:32 +0200)]
tree-wide: port various bits over to locale_is_installed()
(cherry picked from commit
a00a78b84e2ab352b3144bfae8bc578d172303be)
Resolves: #
1755287
Lennart Poettering [Thu, 30 Apr 2020 16:32:55 +0000 (18:32 +0200)]
test: add test case for locale_is_installed()
(cherry picked from commit
b45b0a69bb7ef3e6e66d443eae366b6d1c387cab)
Related: #
1755287
Lennart Poettering [Thu, 30 Apr 2020 16:30:56 +0000 (18:30 +0200)]
locale-util: add new helper locale_is_installed()
This new helper checks whether the specified locale is installed. It's
distinct from locale_is_valid() which just superficially checks if a
string looks like something that could be a valid locale.
Heavily inspired by @jsynacek's #13964.
Replaces: #13964
(cherry picked from commit
23fa786ca67ed3a32930ff1a7b175ac823db187c)
Related: #
1755287
Daan De Meyer [Wed, 10 Jun 2020 18:19:41 +0000 (20:19 +0200)]
log: Prefer logging to CLI unless JOURNAL_STREAM is set
(cherry picked from commit
bc694c06e60505efeb09e5278a7b22cdfa23975e)
Resolves: #
1865840
David Tardon [Mon, 9 Nov 2020 08:27:02 +0000 (09:27 +0100)]
remove references of non-existent man pages
This is a follow-up to commit
8ad89170001c9aba8849630ddb5da81d9e24a1bc,
which introduced the man page change.
Resolves: #
1876807
David Tardon [Fri, 6 Nov 2020 09:13:19 +0000 (10:13 +0100)]
fix typo in ProtectSystem= option
This was introduced by commit
d9ae3222cfbd5d2a48e6dbade6617085cc76f1c1 .
Resolves: #
1871139
Michal Sekletár [Mon, 19 Oct 2020 09:10:31 +0000 (11:10 +0200)]
udev/net_id: don't generate slot based names if multiple devices might claim the same slot
(cherry picked from commit
2c8ec0095e6fd2e72879d4915ff8a9e5c0664d0b)
Resolves: #
1827462
Michal Sekletár [Mon, 19 Oct 2020 08:56:11 +0000 (10:56 +0200)]
udev/net_id: parse _SUN ACPI index as a signed integer
Negative value means there is no match between a PCI device and any of
the slots. In the following commit we will extend this and value of 0
will indicate that there is a match between some slot and PCI device,
but that device is a PCI bridge.
(cherry picked from commit
3e545ae5abcf258791eacbee60c829c100a33274)
Related: #
1827462
Zbigniew Jędrzejewski-Szmek [Thu, 9 May 2019 10:34:30 +0000 (12:34 +0200)]
man: describe naming schemes in a new man page
I decided to make this a separate man page because it is freakin' long.
This content could equally well go in systemd-udevd.service(8), systemd.link(5),
or a new man page for the net_id builtin.
v2:
- rename to systemd.net-naming-scheme
- add udevadm test-builtin net_id example
(cherry picked from commit
0b1e5b6ed8c6b9a2bc53709eb75e381d360f05bf)
Related: #
1827462
[msekleta: I've removed parts that describe features which are not
available in RHEL-8]
Zbigniew Jędrzejewski-Szmek [Tue, 11 Dec 2018 22:28:29 +0000 (23:28 +0100)]
meson: make net.naming-scheme= default configurable
This is useful for distributions, where the stability of interface names should
be preseved after an upgrade of systemd. So when some specific release of the
distro is made available, systemd defaults to the latest & greatest naming
scheme, and subsequent updates set the same default. This default may still
be overriden through the kernel and env var options.
A special value "latest" is also allowed. Without a specific name, it is harder
to verride from meson. In case of 'combo' options, meson reads the default
during the initial configuration, and "remembers" this choice. When systemd is
updated, old build/ directories could keep the old default, which would be
annoying. Hence, "latest" is introduced to make it explicit, yet follow the
upstream. This is actually useful for the user too, because it may be used
as an override, without having to actually specify a version.
(cherry picked from commit
06da5c63dd697ea4087e76c6d809b60b5780b87c)
Related: #
1827462
[msekleta: note that our default is not latest but rhel-8.0]
Michal Sekletár [Wed, 14 Oct 2020 14:57:44 +0000 (16:57 +0200)]
udev: introduce udev net_id "naming schemes"
With this we can stabilize how naming works for network interfaces. A
user can request through a kernel cmdline option or an env var which
scheme to follow. The idea is that installers use this to set into stone
(a very soft stone though) the scheme used during installation so that
interface naming doesn't change afterwards anymore.
Why use env vars and kernel cmdline options, and not a config file of
its own?
Well, first of all there's no obvious existing one to use. But more
importantly: I have the feeling that this logic is kind of an incomplete
hack, and I simply don't want to do advertise this as a perfectly
working solution. So far we used env vars for the non-so-official
options and proper config files for the official stuff. Given how
incomplete this logic is (i.e. the big variable for naming remains the
kernel, which might expose sysfs attributes in newer versions that we
check for and didn't exist in older versions — and other problems like
this), I am simply not confident in giving this first-class exposure in
a primary configuration file.
Fixes: #10448
(cherry-picked from commit
f7e81fd96fdfe0ac6dcdb72de43f7cb4720e363a)
Related: #
1827462
[msekleta: note that we are introducing our own naming schemes based on
RHEL-8 minor versions. Also we are not backporting all naming scheme
features that appeared in the original commit. We are backporting only
features relevant for v239 while original commit also converted
changes introduced in v240 into naming scheme flags.]
Lukas Nykryn [Thu, 28 Aug 2014 13:12:10 +0000 (15:12 +0200)]
man: mention System Administrator's Guide in systemctl manpage
(cherry picked from commit
d4582346f47064de24470b5f92e418966004925f)
Resolves: #
1623116
Lennart Poettering [Sat, 4 Apr 2020 10:23:02 +0000 (12:23 +0200)]
user-util: rework how we validate user names
This reworks the user validation infrastructure. There are now two
modes. In regular mode we are strict and test against a strict set of
valid chars. And in "relaxed" mode we just filter out some really
obvious, dangerous stuff. i.e. strict is whitelisting what is OK, but
"relaxed" is blacklisting what is really not OK.
The idea is that we use strict mode whenver we allocate a new user
(i.e. in sysusers.d or homed), while "relaxed" mode is when we process
users registered elsewhere, (i.e. userdb, logind, …)
The requirements on user name validity vary wildly. SSSD thinks its fine
to embedd "@" for example, while the suggested NAME_REGEX field on
Debian does not even allow uppercase chars…
This effectively liberaralizes a lot what we expect from usernames.
The code that warns about questionnable user names is now optional and
only used at places such as unit file parsing, so that it doesn't show
up on every userdb query, but only when processing configuration files
that know better.
Fixes: #15149 #15090
(cherry picked from commit
7a8867abfab10e5bbca10590ec2aa40c5b27d8fb)
Resolves: #
1848373
Lennart Poettering [Mon, 30 Mar 2020 19:46:01 +0000 (21:46 +0200)]
user-util: switch order of checks in valid_user_group_name_or_id_full()
When we are supposed to accept numeric UIDs formatted as string, then
let's check that first, before passing things on to
valid_user_group_name_full(), since that might log about, and not the
other way round.
See: #15201
Follow-up for:
93c23c9297e48e594785e0bb9c51504aae5fbe3e
(cherry picked from commit
a85daa0dfb3eb03be9845760e90e54b9af8fb00e)
Related: #
1848373
Zbigniew Jędrzejewski-Szmek [Thu, 1 Aug 2019 08:02:14 +0000 (10:02 +0200)]
shared/user-util: allow usernames with dots in specific fields
People do have usernames with dots, and it makes them very unhappy that systemd
doesn't like their that. It seems that there is no actual problem with allowing
dots in the username. In particular chown declares ":" as the official
separator, and internally in systemd we never rely on "." as the seperator
between user and group (nor do we call chown directly). Using dots in the name
is probably not a very good idea, but we don't need to care. Debian tools
(adduser) do not allow users with dots to be created.
This patch allows *existing* names with dots to be used in User, Group,
SupplementaryGroups, SocketUser, SocketGroup fields, both in unit files and on
the command line. DynamicUsers and sysusers still follow the strict policy.
user@.service and tmpfiles already allowed arbitrary user names, and this
remains unchanged.
Fixes #12754.
(cherry picked from commit
ae480f0b09aec815b64579bb1828ea935d8ee236)
Related: #
1848373
Balint Reczey [Wed, 18 Mar 2020 17:29:02 +0000 (18:29 +0100)]
user-util: Allow names starting with a digit
In
1a29610f5fa1bcb2eeb37d2c6b79d8d1a6dbb865 the change inadvertedly
disabled names with digit as the first character. This follow-up change
allows a digit as the first character in compat mode.
Fixes: #15141
(cherry picked from commit
93c23c9297e48e594785e0bb9c51504aae5fbe3e)
Related: #
1848373
Zbigniew Jędrzejewski-Szmek [Wed, 28 Aug 2019 10:05:52 +0000 (12:05 +0200)]
shared/user-util: emit a warning on names with dots
(cherry picked from commit
88e2ed0b5bf6f08f5a2d4d64b1fefdc7192b9aac)
Related: #
1848373
David Tardon [Tue, 27 Oct 2020 09:31:05 +0000 (10:31 +0100)]
shared/user-util: add compat forms of user name checking functions
New functions are called valid_user_group_name_compat() and
valid_user_group_name_or_id_compat() and accept dots in the user
or group name. No functional change except the tests.
(cherry picked from commit
1a29610f5fa1bcb2eeb37d2c6b79d8d1a6dbb865)
This completes previous partial cherry-pick of the same commit (commit
76176de0889c3e8b9b3a176da24e4f8dbbd380a3).
Related: #
1848373
Lennart Poettering [Mon, 1 Jun 2020 15:48:41 +0000 (17:48 +0200)]
tests: beef up integer parsing tests
(cherry picked from commit
53c6db99fa4b52f97e19977f21d3133f8ceb3dcd)
Related: #
1848373
Lennart Poettering [Mon, 1 Jun 2020 15:31:51 +0000 (17:31 +0200)]
parse-util: also parse integers prefixed with 0b and 0o
Let's adopt Python 3 style 0b and 0x syntaxes, because it makes a ton of
sense, in particular in bitmask settings.
(cherry picked from commit
fc80cabcf584a8b486bdff5be0c074fec4059cdc)
Related: #
1848373