]> git.ipfire.org Git - thirdparty/systemd.git/log
thirdparty/systemd.git
3 years agoboot: Use xstrdup8/16 23512/head
Jan Janssen [Wed, 25 May 2022 09:05:19 +0000 (11:05 +0200)] 
boot: Use xstrdup8/16

Note that xstrdup is now safe to call with a NULL pointer and will
just return NULL in that case.

3 years agoboot: Add xstrdup8/16
Jan Janssen [Wed, 25 May 2022 08:59:01 +0000 (10:59 +0200)] 
boot: Add xstrdup8/16

3 years agoboot: Use memcmp/memcpy/memset
Jan Janssen [Tue, 24 May 2022 11:39:00 +0000 (13:39 +0200)] 
boot: Use memcmp/memcpy/memset

3 years agoboot: Add memcmp/memcpy/memset
Jan Janssen [Tue, 24 May 2022 11:29:43 +0000 (13:29 +0200)] 
boot: Add memcmp/memcpy/memset

3 years agoboot: Use strsize8/16
Jan Janssen [Tue, 24 May 2022 09:07:04 +0000 (11:07 +0200)] 
boot: Use strsize8/16

3 years agoboot: Add strsize8/16
Jan Janssen [Tue, 24 May 2022 08:57:00 +0000 (10:57 +0200)] 
boot: Add strsize8/16

3 years agoboot: Use strchr8/16
Jan Janssen [Tue, 24 May 2022 08:26:35 +0000 (10:26 +0200)] 
boot: Use strchr8/16

3 years agoboot: Add strchr8/16
Jan Janssen [Tue, 24 May 2022 08:21:31 +0000 (10:21 +0200)] 
boot: Add strchr8/16

3 years agoboot: Use strcpy8/16
Jan Janssen [Tue, 24 May 2022 08:16:34 +0000 (10:16 +0200)] 
boot: Use strcpy8/16

3 years agoboot: Add strcpy8/16
Jan Janssen [Tue, 24 May 2022 08:14:35 +0000 (10:14 +0200)] 
boot: Add strcpy8/16

3 years agoboot: Use strtolower8/16
Jan Janssen [Thu, 26 May 2022 08:01:03 +0000 (10:01 +0200)] 
boot: Use strtolower8/16

3 years agoboot: Add strtolower8/16
Jan Janssen [Thu, 26 May 2022 07:57:16 +0000 (09:57 +0200)] 
boot: Add strtolower8/16

3 years agoboot: Use strcmp16 for cpio sorting
Jan Janssen [Thu, 26 May 2022 07:36:30 +0000 (09:36 +0200)] 
boot: Use strcmp16 for cpio sorting

3 years agoboot: Use strcmp8/16
Jan Janssen [Tue, 24 May 2022 08:07:07 +0000 (10:07 +0200)] 
boot: Use strcmp8/16

This also replaces streq and similar functions for consistency. Note
that streq16 is null pointer safe, so streq_ptr can be safely replaced
too.

3 years agoboot: Add strcmp8/16
Jan Janssen [Mon, 23 May 2022 11:09:03 +0000 (13:09 +0200)] 
boot: Add strcmp8/16

3 years agoboot: Use strlen8/16
Jan Janssen [Mon, 23 May 2022 10:32:50 +0000 (12:32 +0200)] 
boot: Use strlen8/16

The casts in this and the next few commits are curently necessary
because CHAR8 is defined as uint8_t in gnu-efi, while char is signed.
Once we switch from gnu-efi typedefs to stdint types, the casts
will be dropped.

3 years agoboot: Add strlen8/16
Jan Janssen [Mon, 23 May 2022 09:23:40 +0000 (11:23 +0200)] 
boot: Add strlen8/16

3 years agoboot: Use stddef.h offsetof
Jan Janssen [Mon, 23 May 2022 10:08:15 +0000 (12:08 +0200)] 
boot: Use stddef.h offsetof

3 years agoseccomp: fix a typo in error message
Frantisek Sumsal [Tue, 31 May 2022 09:20:44 +0000 (11:20 +0200)] 
seccomp: fix a typo in error message

3 years agoMerge pull request #23558 from msekletar/issue-20329-followup
Yu Watanabe [Tue, 31 May 2022 08:38:25 +0000 (17:38 +0900)] 
Merge pull request #23558 from msekletar/issue-20329-followup

Actually delay running of mount start jobs when /p/s/mountinfo is rate limited

3 years agodocs: fix typo XBOOOTLDR -> XBOOTLDR
Matthias Lisin [Tue, 31 May 2022 07:58:57 +0000 (09:58 +0200)] 
docs: fix typo XBOOOTLDR -> XBOOTLDR

3 years agoSimplify random number selection
Jason A. Donenfeld [Tue, 24 May 2022 13:09:20 +0000 (15:09 +0200)] 
Simplify random number selection

We currently have a convoluted and complex selection of which random
numbers to use. We can simplify this down to two functions that cover
all of our use cases:

1) Randomness for crypto: this one needs to wait until the RNG is
   initialized. So it uses getrandom(0). If that's not available, it
   polls on /dev/random, and then reads from /dev/urandom. This function
   returns whether or not it was successful, as before.

2) Randomness for other things: this one uses getrandom(GRND_INSECURE).
   If it's not available it uses getrandom(GRND_NONBLOCK). And if that
   would block, then it falls back to /dev/urandom. And if /dev/urandom
   isn't available, it uses the fallback code. It never fails and
   doesn't return a value.

These two cases match all the uses of randomness inside of systemd.

I would prefer to make both of these return void, and get rid of the
fallback code, and simply assert in the incredibly unlikely case that
/dev/urandom doesn't exist. But Luca disagrees, so this commit attempts
to instead keep case (1) returning a return value, which all the callers
already check, and fix the fallback code in (2) to be less bad than
before.

For the less bad fallback code for (2), we now use auxval and some
timestamps, together with various counters representing the invocation,
hash it all together and provide the output. Provided that AT_RANDOM is
secure, this construction is probably okay too, though notably it
doesn't have any forward secrecy. Fortunately, it's only used by
random_bytes() and not by crypto_random_bytes().

3 years agoMerge pull request #23533 from yuwata/portable-remove-drop-in-configs
Zbigniew Jędrzejewski-Szmek [Tue, 31 May 2022 06:52:30 +0000 (08:52 +0200)] 
Merge pull request #23533 from yuwata/portable-remove-drop-in-configs

portable: remove drop-in configs

3 years agoMerge pull request #23564 from yuwata/core-unit-add-dep
Yu Watanabe [Tue, 31 May 2022 05:07:34 +0000 (14:07 +0900)] 
Merge pull request #23564 from yuwata/core-unit-add-dep

core: fix notification about unit dependency change

3 years agocgroup-util: Properly handle conditions where cgroup.threads is empty after SIGKILL...
msizanoen1 [Mon, 30 May 2022 15:08:07 +0000 (22:08 +0700)] 
cgroup-util: Properly handle conditions where cgroup.threads is empty after SIGKILL but processes still remain

After sending a SIGKILL to a process, the process might disappear from
`cgroup.threads` but still show up in `cgroup.procs` and still remains in the
cgroup and cause migrating new processes to `Delegate=yes` cgroups to fail with
`-EBUSY`. This is especially likely for heavyweight processes that consume more
kernel CPU time to clean up.

Fix this by only returning 0 when both `cgroup.threads` and
`cgroup.procs` are empty.

3 years agoMerge pull request #23560 from mrc0mmand/coccinelle
Yu Watanabe [Mon, 30 May 2022 20:02:57 +0000 (05:02 +0900)] 
Merge pull request #23560 from mrc0mmand/coccinelle

A couple of tweaks suggested by Coccinelle

3 years agoMerge pull request #23565 from bnf/man-nspawn-wording
Zbigniew Jędrzejewski-Szmek [Mon, 30 May 2022 19:50:57 +0000 (21:50 +0200)] 
Merge pull request #23565 from bnf/man-nspawn-wording

man: nspawn related wording improvements

3 years agoman/nspawn: os-release is only checked for booted containers 23565/head
Benjamin Franzke [Mon, 30 May 2022 18:21:48 +0000 (20:21 +0200)] 
man/nspawn: os-release is only checked for booted containers

/etc/os-release existence is only enforced in --boot mode,
therefore the term "starting" (which also applies to chroot-like mode)
is substituted with "booting" in this context.

3 years agoman/nspawn: add a sentence-connecting adverb to machinectl note
Benjamin Franzke [Sat, 28 May 2022 12:55:22 +0000 (14:55 +0200)] 
man/nspawn: add a sentence-connecting adverb to machinectl note

The recommendation to use machinectl login/shell instead of
trying to combine two distinct container instances seemed a
litte bit out of context and is now combined via "rather".

3 years agoman/nspawn: fix boot-option related wording
Benjamin Franzke [Sat, 28 May 2022 12:42:17 +0000 (14:42 +0200)] 
man/nspawn: fix boot-option related wording

3 years agocore: make unit_add_two_dependencies() or friends return 1 on changed 23564/head
Yu Watanabe [Mon, 30 May 2022 16:44:44 +0000 (01:44 +0900)] 
core: make unit_add_two_dependencies() or friends return 1 on changed

Follow-up for f971def3c23d780aab99d988bd71b94931d74be6.

3 years agocore/unit: fix notification about unit dependency change
Yu Watanabe [Mon, 30 May 2022 16:43:15 +0000 (01:43 +0900)] 
core/unit: fix notification about unit dependency change

This also makes unit_add_dependency() return 1 only when a dependency
is added.

3 years agoMerge pull request #23562 from yuwata/fix-typo
Yu Watanabe [Mon, 30 May 2022 16:52:39 +0000 (01:52 +0900)] 
Merge pull request #23562 from yuwata/fix-typo

Fix typo

3 years agoesp: fix typo 23562/head
Yu Watanabe [Mon, 30 May 2022 16:16:41 +0000 (01:16 +0900)] 
esp: fix typo

Follow-up for 13d7c841a24f784995a000230706f259c4baec96.

3 years agococcinelle: don't try to use IN_SET() in assert_cc() 23560/head
Frantisek Sumsal [Mon, 30 May 2022 16:17:11 +0000 (18:17 +0200)] 
coccinelle: don't try to use IN_SET() in assert_cc()

Since assert_cc() requires an integral constant expression.

3 years agodoc: fix typo
Yu Watanabe [Mon, 30 May 2022 16:16:01 +0000 (01:16 +0900)] 
doc: fix typo

Follow-ups for #23504.

3 years agojournal: return & log in one statement
Frantisek Sumsal [Mon, 30 May 2022 14:51:48 +0000 (16:51 +0200)] 
journal: return & log in one statement

3 years agoanalyze: use IN_SET() in one more place
Frantisek Sumsal [Mon, 30 May 2022 14:50:57 +0000 (16:50 +0200)] 
analyze: use IN_SET() in one more place

3 years agotest: add coverage for #23481 23533/head
Frantisek Sumsal [Wed, 25 May 2022 18:30:34 +0000 (20:30 +0200)] 
test: add coverage for #23481

Provide some coverage for systemd/systemd#23481.

Without 794da5a:
```
[   34.730815] testsuite-29.sh[600]: + portablectl detach --now --runtime --enable /tmp/rootdir minimal-app0
         Stopping minimal-app0-foo.service...
[  OK  ] Stopped minimal-app0-foo.service.
         Stopping minimal-app0.service...
[  OK  ] Stopped minimal-app0.service.
[   34.878050] testsuite-29.sh[1383]: =================================================================
[   34.878421] testsuite-29.sh[1383]: ==1383==ERROR: LeakSanitizer: detected memory leaks
[   34.878784] testsuite-29.sh[1383]: Direct leak of 48 byte(s) in 2 object(s) allocated from:
[   34.879174] testsuite-29.sh[1383]:     #0 0x7fdf9c8b0f8c in reallocarray (/lib64/libasan.so.6+0xaef8c)
[   34.879554] testsuite-29.sh[1383]:     #1 0x7fdf9b4270f5 in unit_file_changes_add ../src/shared/install.c:282
[   34.879926] testsuite-29.sh[1383]:     #2 0x7fdf9b2ad9e5 in bus_deserialize_and_dump_unit_file_changes ../src/shared/bus-unit-util.c:2688
[   34.880267] testsuite-29.sh[1383]:     #3 0x40bc27 in maybe_enable_disable ../src/portable/portablectl.c:582
[   34.880673] testsuite-29.sh[1383]:     #4 0x40ef56 in maybe_stop_disable ../src/portable/portablectl.c:810
[   34.881064] testsuite-29.sh[1383]:     #5 0x410bc2 in detach_image ../src/portable/portablectl.c:924
[   34.881493] testsuite-29.sh[1383]:     #6 0x7fdf9b5df424 in dispatch_verb ../src/shared/verbs.c:103
[   34.881953] testsuite-29.sh[1383]:     #7 0x41604a in run ../src/portable/portablectl.c:1427
[   34.882459] testsuite-29.sh[1383]:     #8 0x416106 in main ../src/portable/portablectl.c:1430
[   34.882947] testsuite-29.sh[1383]:     #9 0x7fdf99d5de8f in __libc_start_call_main (/lib64/libc.so.6+0x44e8f)
[   34.883368] testsuite-29.sh[1383]: Indirect leak of 104 byte(s) in 2 object(s) allocated from:
[   34.883732] testsuite-29.sh[1383]:     #0 0x7fdf9c85b8f7 in strdup (/lib64/libasan.so.6+0x598f7)
[   34.884089] testsuite-29.sh[1383]:     #1 0x7fdf9b4271aa in unit_file_changes_add ../src/shared/install.c:288
[   34.884508] testsuite-29.sh[1383]:     #2 0x7fdf9b2ad9e5 in bus_deserialize_and_dump_unit_file_changes ../src/shared/bus-unit-util.c:2688
[   34.884926] testsuite-29.sh[1383]:     #3 0x40bc27 in maybe_enable_disable ../src/portable/portablectl.c:582
[   34.885307] testsuite-29.sh[1383]:     #4 0x40ef56 in maybe_stop_disable ../src/portable/portablectl.c:810
[   34.885647] testsuite-29.sh[1383]:     #5 0x410bc2 in detach_image ../src/portable/portablectl.c:924
[   34.885987] testsuite-29.sh[1383]:     #6 0x7fdf9b5df424 in dispatch_verb ../src/shared/verbs.c:103
[   34.886271] testsuite-29.sh[1383]:     #7 0x41604a in run ../src/portable/portablectl.c:1427
[   34.886557] testsuite-29.sh[1383]:     #8 0x416106 in main ../src/portable/portablectl.c:1430
[   34.886892] testsuite-29.sh[1383]:     #9 0x7fdf99d5de8f in __libc_start_call_main (/lib64/libc.so.6+0x44e8f)
[   34.887187] testsuite-29.sh[1383]: Indirect leak of 2 byte(s) in 2 object(s) allocated from:
[   34.887520] testsuite-29.sh[1383]:     #0 0x7fdf9c85b8f7 in strdup (/lib64/libasan.so.6+0x598f7)
[   34.887797] testsuite-29.sh[1383]:     #1 0x7fdf9b427249 in unit_file_changes_add ../src/shared/install.c:296
[   34.888117] testsuite-29.sh[1383]:     #2 0x7fdf9b2ad9e5 in bus_deserialize_and_dump_unit_file_changes ../src/shared/bus-unit-util.c:2688
[   34.888434] testsuite-29.sh[1383]:     #3 0x40bc27 in maybe_enable_disable ../src/portable/portablectl.c:582
[   34.888693] testsuite-29.sh[1383]:     #4 0x40ef56 in maybe_stop_disable ../src/portable/portablectl.c:810
[   34.888990] testsuite-29.sh[1383]:     #5 0x410bc2 in detach_image ../src/portable/portablectl.c:924
[   34.889254] testsuite-29.sh[1383]:     #6 0x7fdf9b5df424 in dispatch_verb ../src/shared/verbs.c:103
[   34.889580] testsuite-29.sh[1383]:     #7 0x41604a in run ../src/portable/portablectl.c:1427
[   34.889877] testsuite-29.sh[1383]:     #8 0x416106 in main ../src/portable/portablectl.c:1430
[   34.890193] testsuite-29.sh[1383]:     #9 0x7fdf99d5de8f in __libc_start_call_main (/lib64/libc.so.6+0x44e8f)
[   34.890482] testsuite-29.sh[1383]: SUMMARY: AddressSanitizer: 154 byte(s) leaked in 6 allocation(s).

```

With 794da5a:
```
[  OK  ] Started minimal-app0.service.
[   36.794367] testsuite-29.sh[600]: + portablectl detach --now --runtime --enable /tmp/rootdir minimal-app0
         Stopping minimal-app0-foo.service...
[  OK  ] Stopped minimal-app0-foo.service.
         Stopping minimal-app0.service...
[  OK  ] Stopped minimal-app0.service.
[   36.851251] testsuite-29.sh[600]: + umount /tmp/rootdir
```

3 years agoportable: remove drop-in configs even if the main unit file does not exist
Yu Watanabe [Fri, 27 May 2022 05:11:56 +0000 (14:11 +0900)] 
portable: remove drop-in configs even if the main unit file does not exist

When we run `portablectl detach --enable --runtime`, then it triggers
`DisableUnitFilesWithFlags` DBus method and the main unit file is
removed, but its drop-ins are not. Hence, portable_detach() failed to
list existing portable units.

This makes the loop for listing portable units also accept drop-in
directories. So, all remaining drop-in directories are correctly
removed.

Before:
```
testsuite-29.sh[600]: + portablectl detach --now --runtime --enable /tmp/rootdir minimal-app0
portablectl[1391]: (Matching unit files with prefixes 'minimal-app0'.)
portablectl[1391]: Queued /org/freedesktop/systemd1/job/1812 to call StopUnit on portable service minimal-app0-foo.service.
portablectl[1391]: Removed "/run/systemd/system.attached/minimal-app0-foo.service".
portablectl[1391]: Queued /org/freedesktop/systemd1/job/1813 to call StopUnit on portable service minimal-app0.service.
portablectl[1391]: Removed "/run/systemd/system.attached/minimal-app0.service".
portablectl[1391]: Got result done/Success for job minimal-app0-foo.service
portablectl[1391]: Got result done/Success for job minimal-app0.service
portablectl[1391]: DetachImage failed: No unit files associated with '/tmp/rootdir' found attached to the system. Image not attached?
```

After:
```
testsuite-29.sh[508]: + portablectl detach --now --runtime --enable /tmp/rootdir minimal-app0
portablectl[1076]: (Matching unit files with prefixes 'minimal-app0'.)
portablectl[1076]: Queued /org/freedesktop/systemd1/job/1946 to call StopUnit on portable service minimal-app0-foo.service.
portablectl[1076]: Removed "/run/systemd/system.attached/minimal-app0-foo.service".
portablectl[1076]: Queued /org/freedesktop/systemd1/job/1947 to call StopUnit on portable service minimal-app0.service.
portablectl[1076]: Removed "/run/systemd/system.attached/minimal-app0.service".
portablectl[1076]: Removed /run/systemd/system.attached/minimal-app0.service.d/10-profile.conf.
portablectl[1076]: Removed /run/systemd/system.attached/minimal-app0.service.d/20-portable.conf.
portablectl[1076]: Removed /run/systemd/system.attached/minimal-app0.service.d.
portablectl[1076]: Removed /run/systemd/system.attached/minimal-app0-foo.service.d/10-profile.conf.
portablectl[1076]: Removed /run/systemd/system.attached/minimal-app0-foo.service.d/20-portable.conf.
portablectl[1076]: Removed /run/systemd/system.attached/minimal-app0-foo.service.d.
portablectl[1076]: Removed /run/portables/rootdir.
portablectl[1076]: Removed /run/systemd/system.attached.
```

3 years agoMerge pull request #23354 from DaanDeMeyer/mount-implicit-device-dep-trace
Yu Watanabe [Mon, 30 May 2022 16:00:56 +0000 (01:00 +0900)] 
Merge pull request #23354 from DaanDeMeyer/mount-implicit-device-dep-trace

core: Add trace logging to mount_add_device_dependencies()

3 years agotests: make sure we delay running mount start jobs when /p/s/mountinfo is rate limited 23558/head
Michal Sekletar [Mon, 30 May 2022 12:50:05 +0000 (14:50 +0200)] 
tests: make sure we delay running mount start jobs when /p/s/mountinfo is rate limited

3 years agounit: check for mount rate limiting before checking active state
Michal Sekletar [Mon, 30 May 2022 09:55:41 +0000 (11:55 +0200)] 
unit: check for mount rate limiting before checking active state

Having this check as part of mount_can_start() is too late because
UNIT(u)->can_start() virtual method is called after checking the active
state of unit in unit_start().

We need to hold off running mount start jobs when /p/s/mountinfo monitor
is rate limited even when given mount unit is already active.

Fixes #20329

3 years agoMerge pull request #23529 from nabijaczleweli/dollar-asterisk
Zbigniew Jędrzejewski-Szmek [Mon, 30 May 2022 08:27:14 +0000 (10:27 +0200)] 
Merge pull request #23529 from nabijaczleweli/dollar-asterisk

Don't linebreak after each initrd in kernel-install verbose mode

3 years agomeson: Build header tests with -pedantic
Jan Janssen [Fri, 27 May 2022 19:15:22 +0000 (21:15 +0200)] 
meson: Build header tests with -pedantic

By using __extension__, we can silence pedantic errors we cannot or
do not want to fix.

This in particular silences:
 - enum values being outside of int range
 - variadic macros
 - long long being C99
 - type of bit-field ‘type’ is a GCC extension
 - use of C99 bool in public header functions

3 years agoportable: try to remove unit files even in a spurious state
Yu Watanabe [Sun, 29 May 2022 19:34:29 +0000 (04:34 +0900)] 
portable: try to remove unit files even in a spurious state

3 years agotest: drop redundant log message
Yu Watanabe [Fri, 27 May 2022 04:37:27 +0000 (13:37 +0900)] 
test: drop redundant log message

3 years agoMerge pull request #23542 from medhefgo/attributes
Yu Watanabe [Sun, 29 May 2022 19:07:41 +0000 (04:07 +0900)] 
Merge pull request #23542 from medhefgo/attributes

meson: Document why -Wimplicit-fallthrough is not used with clang

3 years agotests: link tests using fabs against libm explicitly
Evgeny Vereshchagin [Thu, 26 May 2022 16:16:22 +0000 (16:16 +0000)] 
tests: link tests using fabs against libm explicitly

Some compiler wrappers like honggfuzz pass -fno-builtin explicitly
and because of that the tests where fabs is used fail to compile
with something like
```
FAILED: test-bus-marshal
...
/usr/bin/ld: test-bus-marshal.p/src_libsystemd_sd-bus_test-bus-marshal.c.o: undefined reference to symbol 'fabs@@GLIBC_2.2.5'
/usr/bin/ld: /usr/lib64/libm.so.6: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
```

Fun fact: it took honggfuzz less than a minute to discover
https://github.com/advisories/GHSA-gmc7-pqv9-966m used by
systemd to compress/descompress some stuff.

3 years agoclang-format: Adjust style of pointers
Jan Janssen [Sat, 28 May 2022 12:25:15 +0000 (14:25 +0200)] 
clang-format: Adjust style of pointers

We gernerally have our pointers aligned to the right. SpaceAroundPointerQualifiers
makes sure "const char * const" is formatted nicely.

3 years agoMerge pull request #23550 from evverx/fuzz-i386
Frantisek Sumsal [Sun, 29 May 2022 18:35:03 +0000 (18:35 +0000)] 
Merge pull request #23550 from evverx/fuzz-i386

oss-fuzz: support i386

3 years agoMerge pull request #23548 from tpgxyz/lua2
Zbigniew Jędrzejewski-Szmek [Sun, 29 May 2022 18:08:05 +0000 (20:08 +0200)] 
Merge pull request #23548 from tpgxyz/lua2

rpm: adjust lua trigger for udevadm

3 years agooss-fuzz: support i386 23550/head
Evgeny Vereshchagin [Sun, 29 May 2022 06:52:54 +0000 (06:52 +0000)] 
oss-fuzz: support i386

Closes https://github.com/systemd/systemd/issues/23532

3 years agodocs: mention how to build 32 bit fuzz targets
Evgeny Vereshchagin [Sun, 29 May 2022 07:36:33 +0000 (07:36 +0000)] 
docs: mention how to build 32 bit fuzz targets

3 years agomeson: exclude pcre2 when dependencies are skipped
Evgeny Vereshchagin [Sun, 29 May 2022 06:44:45 +0000 (06:44 +0000)] 
meson: exclude pcre2 when dependencies are skipped

3 years agorpm: adjust lua trigger for udevadm 23548/head
Tomasz Paweł Gajc [Sat, 28 May 2022 19:38:33 +0000 (21:38 +0200)] 
rpm: adjust lua trigger for udevadm

3 years agorpm: use rpm.execute() instead of fork() and execp() for trigger scriplets 23539/head
Tomasz Paweł Gajc [Fri, 27 May 2022 14:15:01 +0000 (16:15 +0200)] 
rpm: use rpm.execute() instead of fork() and execp() for trigger scriplets

3 years agoMove homectl and userdbctl to bindir
Michael Biebl [Sat, 28 May 2022 10:00:08 +0000 (12:00 +0200)] 
Move homectl and userdbctl to bindir

Those binaries aren't needed during early boot.

3 years agomeson: Document why -Wimplicit-fallthrough is not used with clang 23542/head
Jan Janssen [Sat, 28 May 2022 09:41:10 +0000 (11:41 +0200)] 
meson: Document why -Wimplicit-fallthrough is not used with clang

This changes the macro to ensure proper fallthrough attributes are
used with clang in case this option is added in the future.

3 years agoman: Fix minor typo
Javkhlanbayar Khongorzul [Sat, 28 May 2022 09:10:58 +0000 (11:10 +0200)] 
man: Fix minor typo

3 years agomacro: Move attribute defintions to macro-fundamental
Jan Janssen [Sat, 28 May 2022 09:25:33 +0000 (11:25 +0200)] 
macro: Move attribute defintions to macro-fundamental

This also sorts them.

3 years agosd-bus: fix buffer overflow
Yu Watanabe [Thu, 26 May 2022 19:23:10 +0000 (04:23 +0900)] 
sd-bus: fix buffer overflow

Fixes #23486.

3 years agoMerge pull request #23518 from enr0n/sd-hwdb-from-path
Luca Boccassi [Fri, 27 May 2022 21:51:36 +0000 (22:51 +0100)] 
Merge pull request #23518 from enr0n/sd-hwdb-from-path

Implement --root option for systemd-hwdb query

3 years agoUse descriptive name for nobody
Zbigniew Jędrzejewski-Szmek [Fri, 27 May 2022 12:09:24 +0000 (14:09 +0200)] 
Use descriptive name for nobody

This matches the changes pushed to Fedora [1,2].

[1] https://fedoraproject.org/wiki/Changes/RenameNobodyUser
[2] https://pagure.io/setup/c/f6fdb5ffc87fc8f1acc211867fef4e3f0856edfc

3 years agohwdb: implement --root option for systemd-hwdb query 23518/head
Nick Rosbrook [Tue, 24 May 2022 17:15:13 +0000 (13:15 -0400)] 
hwdb: implement --root option for systemd-hwdb query

Currently, the systemd-hwdb --root flag only has an effect for the
'update' verb. It would be useful to be able to use the --root option
for the 'query' verb too (e.g. for testing a hwdb.bin created with
systemd-hwdb update --root <path>).

Use sd_hwdb_new_from_path to initialize the hwdb if --root is passed to
systemd-hwdb query.

Note that this functionality was not added to 'udevadm hwdb' since that
command is deprecated.

3 years agosd-hwdb: add sd_hwdb_new_from_path
Nick Rosbrook [Tue, 24 May 2022 17:08:06 +0000 (13:08 -0400)] 
sd-hwdb: add sd_hwdb_new_from_path

The existing sd_hwdb_new function always initializes the hwdb from the
first successful hwdb.bin it finds from hwdb_bin_paths. This means there
is currently no way to initialize a hwdb from an explicit path, which
would be useful for systemd-hwdb query.

Add sd_hwdb_new_from_path to allow a sd_hwdb to be initialized from a
custom path outside of hwdb_bin_paths.

3 years agosd-hwdb: include sys/stat.h in hwdb-internal.h
Nick Rosbrook [Thu, 26 May 2022 18:32:20 +0000 (14:32 -0400)] 
sd-hwdb: include sys/stat.h in hwdb-internal.h

Include this header to fix errors when including hwdb-internal.h:
  ../src/libsystemd/sd-hwdb/hwdb-internal.h:16:21: error: field ‘st’ has incomplete type
     16 |         struct stat st;

3 years agoMerge pull request #23504 from keszybz/bls-reordering
Luca Boccassi [Fri, 27 May 2022 13:36:10 +0000 (14:36 +0100)] 
Merge pull request #23504 from keszybz/bls-reordering

Refactor the BLS and add a description of version sorts

3 years agoMerge pull request #23536 from mrc0mmand/TEST-69-tweaks
Luca Boccassi [Fri, 27 May 2022 13:34:52 +0000 (14:34 +0100)] 
Merge pull request #23536 from mrc0mmand/TEST-69-tweaks

A couple of tweaks for TEST-69-SHUTDOWN

3 years agoMerge pull request #23527 from keszybz/esp-detect-xbootldr
Luca Boccassi [Fri, 27 May 2022 10:46:46 +0000 (11:46 +0100)] 
Merge pull request #23527 from keszybz/esp-detect-xbootldr

Fix xbootldr detection, fail early in kernel-install

3 years agoMerge pull request #23521 from keszybz/some-docs
Luca Boccassi [Fri, 27 May 2022 10:42:01 +0000 (11:42 +0100)] 
Merge pull request #23521 from keszybz/some-docs

Some docs

3 years agohwdb: Add Google Meet speakermic
Pablo Ceballos [Thu, 26 May 2022 22:23:35 +0000 (22:23 +0000)] 
hwdb: Add Google Meet speakermic

It has the same issue as the Google Hangouts Meet speakermic but a
different VID/PID.

3 years agotest: fix a couple of pylint warnings 23536/head
Frantisek Sumsal [Fri, 27 May 2022 09:45:15 +0000 (11:45 +0200)] 
test: fix a couple of pylint warnings

3 years agotest: bump the post-reboot expect() timeout
Frantisek Sumsal [Fri, 27 May 2022 09:41:55 +0000 (11:41 +0200)] 
test: bump the post-reboot expect() timeout

as it may take a bit longer on slower machines:

```
[  OK  ] Reached target System Reboot.
Found cgroup2 on /sys/fs/cgroup/, full unified hierarchy
Failed to open watchdog device /dev/watchdog0, ignoring: No such file or directory
binfmt_misc is not mounted, not detaching entries.
Sending SIGTERM to remaining processes...
ERROR:test-shutdown:Timeout exceeded.
<pexpect.pty_spawn.spawn object at 0x7f3d4bcd20b0>
command: /systemd-meson-build/systemd-nspawn
<...snip...>
buffer (last 100 chars): 'mbinfmt_misc is not mounted, not detaching entries.\x1b[0m\r\nSending SIGTERM to remaining processes...\r\n'
before (last 100 chars): 'mbinfmt_misc is not mounted, not detaching entries.\x1b[0m\r\nSending SIGTERM to remaining processes...\r\n'
after: <class 'pexpect.exceptions.TIMEOUT'>
match: None
match_index: None
exitstatus: None
flag_eof: False
pid: 572528
child_fd: 5
closed: False
timeout: 30
delimiter: <class 'pexpect.exceptions.EOF'>
logfile: <_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>
logfile_read: None
logfile_send: None
maxread: 2000
ignorecase: False
searchwindowsize: None
delaybeforesend: 0.05
delayafterclose: 0.1
delayafterterminate: 0.1
searcher: searcher_re:
    0: re.compile('H login: ')
INFO:test-shutdown:killing child pid 572528
E: nspawn failed with exit code 1
```

3 years agoMerge pull request #23517 from mrc0mmand/cryptsetup-switchroot-transition
Yu Watanabe [Thu, 26 May 2022 22:36:17 +0000 (07:36 +0900)] 
Merge pull request #23517 from mrc0mmand/cryptsetup-switchroot-transition

test: cover initrd->sysroot transition in TEST-24

3 years agoloader.conf: Clarify the default value of timeout.
Eduard Tolosa [Thu, 26 May 2022 20:53:24 +0000 (15:53 -0500)] 
loader.conf: Clarify the default value of timeout.

3 years agokernel-install: don't log each initrd on its own line in verbose mode 23529/head
наб [Thu, 26 May 2022 21:18:07 +0000 (23:18 +0200)] 
kernel-install: don't log each initrd on its own line in verbose mode

3 years agokernel-install: actually ignore the last two arguments
наб [Thu, 26 May 2022 21:16:13 +0000 (23:16 +0200)] 
kernel-install: actually ignore the last two arguments

3 years agoshared/find-esp: enhance logging 23527/head
Zbigniew Jędrzejewski-Szmek [Thu, 26 May 2022 19:36:59 +0000 (21:36 +0200)] 
shared/find-esp: enhance logging

If something doesn't match, let's print the non-matching value.
If we can't query something, say what.
And make the messages in the udev and blkid paths different, so
we tell which approach failed from a log.

3 years agoshared/find-esp: fix inverted check for XBOOTLDR type
Zbigniew Jędrzejewski-Szmek [Thu, 26 May 2022 19:36:33 +0000 (21:36 +0200)] 
shared/find-esp: fix inverted check for XBOOTLDR type

3 years agokernel-install: if a plugin fails, return error immediately
Zbigniew Jędrzejewski-Szmek [Thu, 26 May 2022 18:56:12 +0000 (20:56 +0200)] 
kernel-install: if a plugin fails, return error immediately

Since the first version in 81516adcb71a47837544340f72eb8ee810274119,
kernel-install would "gather" a return value by summing the exit codes
of the plugins… This makes no sense, because those are not additive values.

Let's just break off immediately. We now implement cleanup via trap, so if we
break, we should leave no garbage behind.

3 years agodocs/BLS: clear up the confusion about what $BOOT means 23504/head
Zbigniew Jędrzejewski-Szmek [Wed, 25 May 2022 11:41:29 +0000 (13:41 +0200)] 
docs/BLS: clear up the confusion about what $BOOT means

The text used was originally written for everything being on the ESP. It was
later generalized for support XBOOTLDR, and "$BOOT" was introduced to mean
something like "XBOOTLDR if present, the ESP otherwise", and most of the text
was changed to talk about $BOOT. Sadly, this doesn't work, because the two
partitions are not interchangeable. sd-boot loads entries from both partitions,
and its configuration, random-seed, etc. only from the ESP.

The terms are redefined: $BOOT now means either the ESP or the "boot partition"
playing the same role on MBR systems, and $XBOOTLDR is XBOOTLDR.

Like various previous commits, this makes the specification describe our
current implementation.

Also, the let's just accept the common practice of using /boot and /boot/efi.
Since both partitions need to be read to gather configuration, it isn't a
problem that one is mounted underneath the other one. I think having /boot and
/efi is OK, but not better in any measureable way, so let's stop trying to push
people towards this setup.

A note that XBOOTLDR must be on the same disk as ESP is added.

3 years agoMerge pull request #23523 from evverx/oss-fuzz-links
Zbigniew Jędrzejewski-Szmek [Thu, 26 May 2022 16:10:56 +0000 (18:10 +0200)] 
Merge pull request #23523 from evverx/oss-fuzz-links

docs: add a link to the OSS-Fuzz coverage report

3 years agodocs: be more specific about the OSS-Fuzz toolchain 23523/head
Evgeny Vereshchagin [Thu, 26 May 2022 15:22:50 +0000 (15:22 +0000)] 
docs: be more specific about the OSS-Fuzz toolchain

3 years agocore/device: do not downgrade device state if it is already enumerated 23517/head
Yu Watanabe [Fri, 20 May 2022 08:25:12 +0000 (10:25 +0200)] 
core/device: do not downgrade device state if it is already enumerated

On switching root, a device may have a persistent databse. In that case,
Device.enumerated_found may have DEVICE_FOUND_UDEV flag, and it is not
necessary to downgrade the Device.deserialized_found and
Device.deserialized_state. Otherwise, the state of the device unit may
be changed plugged -> dead -> plugged, if the device has not been mounted.

Fixes #23429.

[mwilck: cherry-picked from #23437]

3 years agodocs: update OSS-Fuzz links
Evgeny Vereshchagin [Thu, 26 May 2022 14:07:32 +0000 (14:07 +0000)] 
docs: update OSS-Fuzz links

3 years agocore/device: device_coldplug(): don't set DEVICE_DEAD
Martin Wilck [Wed, 25 May 2022 10:01:00 +0000 (12:01 +0200)] 
core/device: device_coldplug(): don't set DEVICE_DEAD

dm-crypt device units generated by systemd-cryptsetup-generator
habe BindsTo= dependencies on their backend devices. The dm-crypt
devices have the db_persist flag set, and thus survive the udev db
cleanup while switching root. But backend devices usually don't survive.
These devices are neither mounted nor used for swap, thus they will
seen as DEVICE_NOT_FOUND after switching root.

The BindsTo dependency will cause systemd to schedule a stop
job for the dm-crypt device, breaking boot:

[   68.929457] krypton systemd[1]: systemd-cryptsetup@cr_root.service: Unit is stopped because bound to inactive unit dev-disk-by\x2duuid-3bf91f73\x2d1ee8\x2d4cfc\x2d9048\x2d93ba349b786d.device.
[   68.945660] krypton systemd[1]: systemd-cryptsetup@cr_root.service: Trying to enqueue job systemd-cryptsetup@cr_root.service/stop/replace
[   69.473459] krypton systemd[1]: systemd-cryptsetup@cr_root.service: Installed new job systemd-cryptsetup@cr_root.service/stop as 343

Avoid this by not setting the state of the backend devices to
DEVICE_DEAD.

Fixes the LUKS setup issue reported in #23429.

3 years agotest: store the key on a separate device
Frantisek Sumsal [Thu, 26 May 2022 12:52:52 +0000 (14:52 +0200)] 
test: store the key on a separate device

3 years agotest: generate a custom initrd for TEST-24 if $INITRD is unset
Frantisek Sumsal [Thu, 26 May 2022 11:19:11 +0000 (13:19 +0200)] 
test: generate a custom initrd for TEST-24 if $INITRD is unset

Co-Authored-By: Yu Watanabe <watanabe.yu+github@gmail.com>
3 years agoman/homectl: adjust man page to match code 23521/head
Zbigniew Jędrzejewski-Szmek [Thu, 26 May 2022 12:23:27 +0000 (14:23 +0200)] 
man/homectl: adjust man page to match code

Fixes #22966. Since there are competing conventions, let's not
change our code, but make the docs match what is implemented.

3 years agoman/sd-bus: discuss negative-return values and add example
Zbigniew Jędrzejewski-Szmek [Thu, 26 May 2022 12:04:52 +0000 (14:04 +0200)] 
man/sd-bus: discuss negative-return values and add example

Fixes #22816.

3 years agoman/shutdown: explain -h more
Zbigniew Jędrzejewski-Szmek [Thu, 26 May 2022 11:14:08 +0000 (13:14 +0200)] 
man/shutdown: explain -h more

Fixes #23401

3 years agoman/automount: say that automounts should not be nested
Zbigniew Jędrzejewski-Szmek [Thu, 26 May 2022 12:28:43 +0000 (14:28 +0200)] 
man/automount: say that automounts should not be nested

Fixes #21832.

3 years agoman/systemd.automount: move the main description up and clarify deps
Zbigniew Jędrzejewski-Szmek [Fri, 20 May 2022 15:35:17 +0000 (17:35 +0200)] 
man/systemd.automount: move the main description up and clarify deps

3 years agoTODO: drop entry
Zbigniew Jędrzejewski-Szmek [Wed, 25 May 2022 14:36:50 +0000 (16:36 +0200)] 
TODO: drop entry

Implemented in 14e6e444dd9eaa0db229548c31baecd75de4478e.

3 years agoman: do not say "additional symlinks" for mount/automount aliases
Zbigniew Jędrzejewski-Szmek [Fri, 20 May 2022 15:31:53 +0000 (17:31 +0200)] 
man: do not say "additional symlinks" for mount/automount aliases

"additional" implies that the unit itself is a symlink, which it is not.
Also "link to the mount unit", not "link to the mount".

3 years agosystemctl: make show/status honour --state and --type
Zbigniew Jędrzejewski-Szmek [Sun, 22 May 2022 12:32:55 +0000 (14:32 +0200)] 
systemctl: make show/status honour --state and --type

This makes the interface more flexible, by allowing the same filtering
for show and status as is done for list-units.

Fixes #23207.

3 years agoMerge pull request #23513 from keszybz/bootctl-version-print
Yu Watanabe [Thu, 26 May 2022 01:30:16 +0000 (10:30 +0900)] 
Merge pull request #23513 from keszybz/bootctl-version-print

bootctl: print version comparison when updating

3 years agotest: cover initrd->sysroot transition in TEST-24
Frantisek Sumsal [Wed, 25 May 2022 15:39:14 +0000 (17:39 +0200)] 
test: cover initrd->sysroot transition in TEST-24

This should cover cases regarding devices with `OPTIONS+="db_persist"`
during initrd->sysroot transition.

See:
  * https://github.com/systemd/systemd/issues/23429
  * https://github.com/systemd/systemd/pull/23218
  * https://github.com/systemd/systemd/pull/23489
  * https://bugzilla.redhat.com/show_bug.cgi?id=2087225

3 years agobootctl: when comparing versions, show the result 23513/head
Zbigniew Jędrzejewski-Szmek [Wed, 25 May 2022 14:00:44 +0000 (16:00 +0200)] 
bootctl: when comparing versions, show the result

In Fedora there was a mixup with versions (the version was prefixed with "v", and
"v251" < "250"). This makes this easier to debug.