]> git.ipfire.org Git - thirdparty/systemd.git/log
thirdparty/systemd.git
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 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 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.

3 years agobasic: add helper function to print </==/>
Zbigniew Jędrzejewski-Szmek [Wed, 25 May 2022 13:58:02 +0000 (15:58 +0200)] 
basic: add helper function to print </==/>

3 years agoanalyze: use '' instead of the empty string when showing versions
Zbigniew Jędrzejewski-Szmek [Wed, 25 May 2022 08:18:14 +0000 (10:18 +0200)] 
analyze: use '' instead of the empty string when showing versions

It looks like garbled output… I didn't use shell-escape, because the other
characters that are special for the shell that are used in versions should
not be escaped.

3 years ago[sd-boot] improve documentation of beep
Rahil Bhimjiani [Wed, 25 May 2022 10:54:30 +0000 (16:24 +0530)] 
[sd-boot] improve documentation of beep

3 years agotest-seccomp: check for CAP_IPC_OWNER before calling shmat()
Anita Zhang [Tue, 24 May 2022 17:51:27 +0000 (10:51 -0700)] 
test-seccomp: check for CAP_IPC_OWNER before calling shmat()

shmat() requires the CAP_IPC_OWNER capability. When running test-seccomp
in environments with root + CAP_SYS_ADMIN, but not CAP_IPC_OWNER,
memory_deny_write_execute_shmat would fail. This fixes it.

3 years agokernel-install: ignore extra args passed when invoked as installkernel
Zbigniew Jędrzejewski-Szmek [Tue, 24 May 2022 20:19:05 +0000 (22:19 +0200)] 
kernel-install: ignore extra args passed when invoked as installkernel

kernel's 'make install' invokes install.sh which calls /sbin/install-kernel.
Thus we are invoked as e.g.
  /sbin/installkernel 5.18.0 arch/x86/boot/bzImage System.map /boot
The last two arguments would be passed as "initrds".

Before , we would just quitely ignore
/boot, because it doesn't pass the 'test -f' test, and possibly try to do
something with System.map. 742561efbe938c45936f2e4f5d81b3ff6b352882 tightened
the check, so we now throw an error.

It seems that the correct thing is to ignore those two arguments, because
our plugin syntax has no notion of System.map. And the installation directory
we can figure out ourselves better. Effectively, this makes things behave
like before, but less by accident.

Fixes #23490.

3 years agoci: reenable validation of GH Actions files
Frantisek Sumsal [Tue, 24 May 2022 19:01:45 +0000 (21:01 +0200)] 
ci: reenable validation of GH Actions files

3 years agoboot: Fix bad CompareMem call
Jan Janssen [Tue, 24 May 2022 12:15:59 +0000 (14:15 +0200)] 
boot: Fix bad CompareMem call

3 years agoportable: Fix memory leak in maybe_enable_disable()
Daan De Meyer [Mon, 23 May 2022 13:32:42 +0000 (15:32 +0200)] 
portable: Fix memory leak in maybe_enable_disable()

Fixes #23481

3 years agoMerge pull request #23475 from nabijaczleweli/certified-lint.1-moment
Frantisek Sumsal [Mon, 23 May 2022 19:16:22 +0000 (19:16 +0000)] 
Merge pull request #23475 from nabijaczleweli/certified-lint.1-moment

Actually run shellcheck on CI

3 years agodissect-image: Explicitly remove partitions when done with image
Daan De Meyer [Wed, 18 May 2022 11:35:21 +0000 (13:35 +0200)] 
dissect-image: Explicitly remove partitions when done with image

When closing a loop device, the kernel will asynchronously remove
the probed partitions. This can lead to race conditions where we
try to reuse a partition device that still needs to be removed by
the kernel. To avoid such issues, let's explicitly try to remove
any partitions using BLKPG_DEL_PARTITION when we're done with an
image.

To make sure we don't try to remove partitions when we want them
to remain (e.g. systemd-dissect --mount), we add
dissected_image_relinquish() in a similar vein to loop_device_relinquish()
and decrypted_image_relinquish().

3 years agoci: bump gcc in the "build test" workflow
Evgeny Vereshchagin [Sat, 7 May 2022 12:40:56 +0000 (12:40 +0000)] 
ci: bump gcc in the "build test" workflow

gcc-12 has been released

3 years agoshellcheck-clean kernel-install again 23475/head
наб [Sun, 22 May 2022 20:09:23 +0000 (22:09 +0200)] 
shellcheck-clean kernel-install again

3 years agoFix which(1) in meson-build.sh
наб [Sun, 22 May 2022 15:13:44 +0000 (17:13 +0200)] 
Fix which(1) in meson-build.sh

3 years agoDon't ignore kernel-install for shellcheck
наб [Sun, 22 May 2022 14:20:56 +0000 (16:20 +0200)] 
Don't ignore kernel-install for shellcheck

3 years agoMerge pull request #23344 from medhefgo/boot-config-add
Zbigniew Jędrzejewski-Szmek [Mon, 23 May 2022 07:26:19 +0000 (09:26 +0200)] 
Merge pull request #23344 from medhefgo/boot-config-add

boot: Small config entry add changes

3 years agoMerge pull request #23414 from keszybz/analyze-vercmp
Zbigniew Jędrzejewski-Szmek [Mon, 23 May 2022 07:14:51 +0000 (09:14 +0200)] 
Merge pull request #23414 from keszybz/analyze-vercmp

systemd-analyze compare-versions

3 years agotest: Test STRLEN for C11 string literals
Jan Janssen [Sun, 22 May 2022 07:37:27 +0000 (09:37 +0200)] 
test: Test STRLEN for C11 string literals

3 years agoNEWS: Fix some minor mistakes
Phaedrus Leeds [Sun, 22 May 2022 16:08:37 +0000 (12:08 -0400)] 
NEWS: Fix some minor mistakes

3 years agocoredump: Fix format string type mismatch
Daan De Meyer [Sun, 22 May 2022 12:36:07 +0000 (14:36 +0200)] 
coredump: Fix format string type mismatch

Fixes #23471

3 years agoboot: Rename functions adding entries to match userspace 23344/head
Jan Janssen [Wed, 11 May 2022 11:00:00 +0000 (13:00 +0200)] 
boot: Rename functions adding entries to match userspace

3 years agoboot: Remove trivial config entry add helpers
Jan Janssen [Wed, 11 May 2022 10:52:24 +0000 (12:52 +0200)] 
boot: Remove trivial config entry add helpers

These two functions have very limited use and are just fancy wrappers
around structured initializers.

3 years agoDo not require a valid version when parsing sd-boot loader entries
Victor Westerhuis [Sun, 14 Nov 2021 15:26:03 +0000 (16:26 +0100)] 
Do not require a valid version when parsing sd-boot loader entries

This fixes #20820

3 years agoMerge pull request #23465 from mrc0mmand/bump-actions-to-ubuntu-2204
Luca Boccassi [Sun, 22 May 2022 01:29:59 +0000 (02:29 +0100)] 
Merge pull request #23465 from mrc0mmand/bump-actions-to-ubuntu-2204

ci: bump GH Actions to Ubuntu Jammy where applicable

3 years agodocs: improve table readability
Benjamin Franzke [Sat, 21 May 2022 14:28:32 +0000 (16:28 +0200)] 
docs: improve table readability

Let the table span more than the default content width,
if the table contains alot of data (controlled by width: auto)
(720px is very good for continuous text, but too narrow for tables).

The container class is therefore adapted to put the
width restriction on the elements itself, allowing for
exceptions for individual elements like <table> and
<h1> (which used an offset margin before and is now
streamlined to use a max-width as well).

Also add a striped background to ease reading rows
and allow for horizontal mobile scrolling without
overflowing the entire document, only the table itself.

3 years agoMerge pull request #22550 from medhefgo/boot-mixed
Luca Boccassi [Sat, 21 May 2022 21:38:56 +0000 (22:38 +0100)] 
Merge pull request #22550 from medhefgo/boot-mixed

boot: EFI mixed mode support

3 years agoci: temporarily disable validation of GH Action files 23465/head
Frantisek Sumsal [Sat, 21 May 2022 15:34:34 +0000 (17:34 +0200)] 
ci: temporarily disable validation of GH Action files

since the current version of super-linter doesn't recognize
ubuntu-22.04 as a valid runner specification. This should
be fixed once https://github.com/github/super-linter/pull/2897
is merged, which includes
https://github.com/rhysd/actionlint/commit/09a60b0f5761c2d066def294e541c25a89756eea

3 years agocryptsetup: fix build with -Db_ndebug=true
Frantisek Sumsal [Sat, 21 May 2022 15:30:51 +0000 (17:30 +0200)] 
cryptsetup: fix build with -Db_ndebug=true

```
 ...
 ../src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-fido2.c:33:13: error: variable 'r' set but not used [-Werror,-Wunused-but-set-variable]
         int r;
             ^
 1 error generated.
 ...
 ../src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-pkcs11.c:34:13: error: variable 'r' set but not used [-Werror,-Wunused-but-set-variable]
         int r;
             ^
 1 error generated.
 ninja: build stopped: subcommand failed.
 + fatal ''\''meson compile'\'' failed with -Db_ndebug=true'
```

3 years agoci: prefer the distro llvm version if available
Frantisek Sumsal [Sat, 21 May 2022 14:35:55 +0000 (16:35 +0200)] 
ci: prefer the distro llvm version if available

3 years agoci: bump GH Actions to Ubuntu Jammy where applicable
Frantisek Sumsal [Sat, 21 May 2022 14:03:14 +0000 (16:03 +0200)] 
ci: bump GH Actions to Ubuntu Jammy where applicable

3 years agoresolved: default to OpenSSL
Luca Boccassi [Tue, 17 May 2022 19:09:49 +0000 (20:09 +0100)] 
resolved: default to OpenSSL

If both gnutls and openssl are available, prefer openssl.
We are gradually moving toward supporting openssl only as the
crypto library, and the resolved gnutls backend will be dropped
at some point, so start nudging users toward the openssl one.

3 years agoMerge pull request #23460 from keszybz/docs-redirect
Zbigniew Jędrzejewski-Szmek [Sat, 21 May 2022 16:11:18 +0000 (18:11 +0200)] 
Merge pull request #23460 from keszybz/docs-redirect

docs: rename COREDUMP_PACKAGE_METADATA → ELF_PACKAGE_METADATA

3 years agodocs: adapt forward layout to systemd.io design 23460/head
Benjamin Franzke [Sat, 21 May 2022 11:08:19 +0000 (13:08 +0200)] 
docs: adapt forward layout to systemd.io design

3 years agodocs: rename COREDUMP_PACKAGE_METADATA → ELF_PACKAGE_METADATA
Zbigniew Jędrzejewski-Szmek [Sat, 21 May 2022 16:07:38 +0000 (18:07 +0200)] 
docs: rename COREDUMP_PACKAGE_METADATA → ELF_PACKAGE_METADATA

The format described by this document is used not only for coredumps,
but also for other purposes, so we've outgrown the old title.

A redirect was added based on https://codepo8.github.io/github-redirection-demo/.
I tried to use a relative link, but it's hard to test if it works
before merging.

Co-authored-by: Benjamin Franzke <benjaminfranzke@googlemail.com>
3 years agoMerge pull request #23464 from bnf/update-wiki-links
Yu Watanabe [Sat, 21 May 2022 14:48:58 +0000 (23:48 +0900)] 
Merge pull request #23464 from bnf/update-wiki-links

tree-wide: replace obsolete wiki links with systemd.io/manpages

3 years agobootctl: Add EFI arch detection support 22550/head
Jan Janssen [Thu, 17 Feb 2022 12:40:25 +0000 (13:40 +0100)] 
bootctl: Add EFI arch detection support

3 years agoboot: Support booting in EFI mixed mode
Jan Janssen [Mon, 7 Feb 2022 11:33:45 +0000 (12:33 +0100)] 
boot: Support booting in EFI mixed mode

The kernel provides a ".compat" PE section that contains a list of
compat entry points with their respective arches. This entry point
does all the heavy lifting to support running 64bit kernels when
the UEFI firmware is 32bit.

Note that the EFI handover protocol code in linux_x86.c does not
need any adjustments as it already correctly calls the 32bit handover
code.

Fixes: #17056
3 years agoboot: Add LINUX_INITRD_MEDIA support to boot.c
Jan Janssen [Thu, 10 Mar 2022 11:53:16 +0000 (12:53 +0100)] 
boot: Add LINUX_INITRD_MEDIA support to boot.c

3 years agoboot: Keep initrds separate from cmdline options
Jan Janssen [Tue, 8 Feb 2022 10:03:20 +0000 (11:03 +0100)] 
boot: Keep initrds separate from cmdline options

This is in preparation for LINUX_INITRD_MEDIA support in boot.c. One
downside is that adding or changing the used initrds by command line
editing is not possible anymore.

3 years agoboot: Edit config entry options inline
Jan Janssen [Mon, 7 Feb 2022 12:26:09 +0000 (13:26 +0100)] 
boot: Edit config entry options inline

An edited entry command line should not be saved globally as it
should be tied to that one entry only.

3 years agofundamental: Move some helpers into string-util-fundamental
Jan Janssen [Sun, 20 Feb 2022 11:17:10 +0000 (12:17 +0100)] 
fundamental: Move some helpers into string-util-fundamental

3 years agoboot: Use cleanup handler to unload image
Jan Janssen [Mon, 7 Feb 2022 12:05:56 +0000 (13:05 +0100)] 
boot: Use cleanup handler to unload image

This also moves the message about failed image execution into
image_start() as we would otherwise show two error messages if
any of the preparatory steps failed.

3 years agonetwork: drop support for old kernels which cannot set prefix route with non-main...
Yu Watanabe [Tue, 5 Apr 2022 15:45:52 +0000 (00:45 +0900)] 
network: drop support for old kernels which cannot set prefix route with non-main route table

Not sure when the issue was fixed.
- kernel-3.10 on CentOS 7 has the issue,
- kernel-4.18 on CentOS 8 works fine.

Note, the workaround dropped by the commit is not incomplete:
with an old kernel which has the issue, all non-prefix routes are
configured on the specified route table, but the prefix route is
configured on the main table. That should not work for most cases,
hence, the workaround is mostly meaningless.

3 years agoMerge pull request #23339 from poettering/sockaddr-size-limit
Luca Boccassi [Sat, 21 May 2022 14:09:04 +0000 (15:09 +0100)] 
Merge pull request #23339 from poettering/sockaddr-size-limit

tree-wide: add support for connecting to AF_UNIX sockets in the file system beyond the 108ch limit

3 years agoMerge pull request #23342 from poettering/efi-monotonic-counter-random-seed
Luca Boccassi [Sat, 21 May 2022 14:08:21 +0000 (15:08 +0100)] 
Merge pull request #23342 from poettering/efi-monotonic-counter-random-seed

sd-boot: include GetNextMonotonicCount() in random seed calculations

3 years agoboot: Build with -flto=auto if available
Jan Janssen [Fri, 13 May 2022 12:25:32 +0000 (14:25 +0200)] 
boot: Build with -flto=auto if available

Without this, we may get the following warning with gcc-12:
    lto-wrapper: warning: using serial compilation of 2 LTRANS jobs

3 years agomacro: Use C11 noreturn only
Jan Janssen [Fri, 20 May 2022 19:59:49 +0000 (21:59 +0200)] 
macro: Use C11 noreturn only

No need to provide a fallback as we compile with gnu11.

3 years agonetworkctl: show error message provided through dbus
Yu Watanabe [Wed, 18 May 2022 03:25:31 +0000 (12:25 +0900)] 
networkctl: show error message provided through dbus

Prompted by #23416.

3 years agoMerge pull request #23453 from keszybz/strv-parsing
Luca Boccassi [Sat, 21 May 2022 14:00:51 +0000 (15:00 +0100)] 
Merge pull request #23453 from keszybz/strv-parsing

Add strv methods with externally-supplied size argument and speed up parsing of /etc/hosts

3 years agoMerge pull request #23463 from bluca/hwdb v251
Luca Boccassi [Sat, 21 May 2022 13:23:41 +0000 (14:23 +0100)] 
Merge pull request #23463 from bluca/hwdb

Finalize NEWS and hwdb for v251

3 years agotree-wide: Update homepage to systemd.io 23464/head
Benjamin Franzke [Thu, 19 May 2022 11:58:15 +0000 (13:58 +0200)] 
tree-wide: Update homepage to systemd.io

3 years agotree-wide: replace obsolete wiki links with systemd.io/manpages
Benjamin Franzke [Thu, 19 May 2022 11:54:24 +0000 (13:54 +0200)] 
tree-wide: replace obsolete wiki links with systemd.io/manpages

All wiki pages that contain a deprecation banner
pointing to systemd.io or manpages are updated to
point to their replacements directly.

Helpful command for identification of available links:
git grep freedesktop.org/wiki | \
    sed "s#.*\(https://www.freedesktop.org/wiki[^ $<'\\\")]*\)\(.*\)#\\1#" | \
    sort | uniq

3 years agotree-wide: streamline wiki links
Benjamin Franzke [Thu, 19 May 2022 12:18:34 +0000 (14:18 +0200)] 
tree-wide: streamline wiki links

* Avoid traling slash as most links are defined without.
* Always use https:// protocol and www. subdomain

Allows for easier tree-wide linkvalidation
for our migration to systemd.io.

3 years agoNEWS: finalize 23463/head
Luca Boccassi [Sat, 21 May 2022 11:46:16 +0000 (12:46 +0100)] 
NEWS: finalize

3 years agohwdb: update via ninja -C build update-hwdb
Luca Boccassi [Sat, 21 May 2022 11:44:36 +0000 (12:44 +0100)] 
hwdb: update via ninja -C build update-hwdb

3 years agoNEWS: update contributors list
Luca Boccassi [Sat, 21 May 2022 11:43:19 +0000 (12:43 +0100)] 
NEWS: update contributors list

3 years agosysext: refuse empty release ID to avoid triggering assertion
Yu Watanabe [Fri, 20 May 2022 18:03:21 +0000 (03:03 +0900)] 
sysext: refuse empty release ID to avoid triggering assertion

Otherwise, the assertion in extension_release_validate() will be
triggered.

3 years agotest: add test for bus introspection of portable1
Yu Watanabe [Fri, 20 May 2022 19:14:03 +0000 (04:14 +0900)] 
test: add test for bus introspection of portable1

Follow-up for #23454.

3 years agoMerge pull request #23439 from keszybz/kernel-install-verbose
Yu Watanabe [Fri, 20 May 2022 19:26:03 +0000 (04:26 +0900)] 
Merge pull request #23439 from keszybz/kernel-install-verbose

Make kernel-install --verbose more verbose and some autodetection logic fixups

3 years agoMerge pull request #23451 from medhefgo/boot-static-assert
Yu Watanabe [Fri, 20 May 2022 19:22:17 +0000 (04:22 +0900)] 
Merge pull request #23451 from medhefgo/boot-static-assert

boot: C11/static_assert

3 years agosd-bus: add comment and test in sd_bus_path_decode() for empty string
Luca Boccassi [Fri, 20 May 2022 13:00:39 +0000 (14:00 +0100)] 
sd-bus: add comment and test in sd_bus_path_decode() for empty string

3970         e = object_path_startswith(path, prefix);
(gdb) p path
$1 = 0x55c5a166f768 "/org/freedesktop/portable1/image"
(gdb) p prefix
$2 = 0x55c59ffc2928 "/org/freedesktop/portable1/image"
(gdb) p e
$1 = 0x5581a1675788 ""

This can be a bit confusing in certain cases, so add a comment and a
test to make the behaviour clearer and explicit.

3 years agoMerge pull request #23454 from keszybz/portable-introspect
Yu Watanabe [Fri, 20 May 2022 18:41:22 +0000 (03:41 +0900)] 
Merge pull request #23454 from keszybz/portable-introspect

Fix bus introspection of portable1

3 years agokernel-install: restore priority of check for /boot/loader/entries 23439/head
Zbigniew Jędrzejewski-Szmek [Thu, 19 May 2022 20:22:44 +0000 (22:22 +0200)] 
kernel-install: restore priority of check for /boot/loader/entries

Before 9e82a74cb0f08a288f9db228a0b5bec8a7188cdb, we had a check like the
following:

if [[ -d /efi/loader/entries ]] || [[ -d /efi/$MACHINE_ID ]]; then
    ENTRY_DIR_ABS="/efi/$MACHINE_ID/$KERNEL_VERSION"
elif [[ -d /boot/loader/entries ]] || [[ -d /boot/$MACHINE_ID ]]; then
    ENTRY_DIR_ABS="/boot/$MACHINE_ID/$KERNEL_VERSION"
elif [[ -d /boot/efi/loader/entries ]] || [[ -d /boot/efi/$MACHINE_ID ]]; then
    ENTRY_DIR_ABS="/boot/efi/$MACHINE_ID/$KERNEL_VERSION"


In stock Fedora 34-, /efi isn't used, but grub creates /boot/loader/entries and
installs kernels and initrds directly in /boot. Thus the second arm of the
check wins, and we end up with BOOT_ROOT=/boot.

After 9e82a74cb0f08a288f9db228a0b5bec8a7188cdb, we iterate over the inner
directory first and over the second directory later:

[ -d /efi/<machine-id> ]
[ -d /boot/efi/<machine-id> ]
[ -d /boot/<machine-id> ]
[ -d /efi/Default ]
[ -d /boot/efi/Default ]
[ -d /boot/Default ]
[ -d /efi/loader/entries ]
[ -d /boot/efi/loader/entries ]
[ -d /boot/loader/entries ]

This was partially reverted by 447a822f8ee47b63a4cae00423c4d407bfa5e516 which
removed Default from the list, and a5307e173bf86d695fe85b8e15e91126e8618a14,
which moved checks for /boot up, so we ended up with:

[ -d /efi/<machine-id> ]
[ -d /boot/<machine-id> ]
[ -d /boot/efi/<machine-id> ]
[ -d /efi/loader/entries ]
[ -d /boot/loader/entries ]
[ -d /boot/efi/loader/entries ]

6637cf9db67237857279262d93ee0e39023c5b85 added autodetection of an entry
token, so we end up checking the following suffixes:

<machine-id>, $IMAGE_ID, $ID, Default

But the important unchanged characteristic is that we iterate over the suffix
first. Sadly this breaks Fedora, because we find /boot/efi/<machine-id> before
we could find /boot/loader/entries. It seems that every possible aspect of
behaviour matters for somebody, so we need to keep the original order of
detection.

With the patch:

[ -d /efi/<machine-id> ]
...
[ -d /efi/loader/entries ]
[ -d /boot/<machine-id> ]
...
[ -d /boot/loader/entries ]
[ -d /boot/efi/<machine-id> ]
...
[ -d /boot/efi/loader/entries ]

Note that we need to check for "loader/entries" too, even though it is not
an entry-token candidate, so that we get the same detection priority as
before.

Fixes https://bugzilla.redhat.com/show_bug.cgi?id=2071034.

3 years agoresolved: use strv_extend_with_size() to avoid slow parsing of /etc/hosts 23453/head
Zbigniew Jędrzejewski-Szmek [Thu, 19 May 2022 08:38:27 +0000 (10:38 +0200)] 
resolved: use strv_extend_with_size() to avoid slow parsing of /etc/hosts

https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43942 is a simple case
where a repeated entry generates a timeout. I didn't import that case, but
generated a simpler one by hand.

$ time build/fuzz-etc-hosts test/fuzz/fuzz-etc-hosts/timeout-many-entries
test/fuzz/fuzz-etc-hosts/timeout-many-entries... ok
build/fuzz-etc-hosts test/fuzz/fuzz-etc-hosts/timeout-many-entries  3.17s (old)
  ↓
build/fuzz-etc-hosts test/fuzz/fuzz-etc-hosts/timeout-many-entries  0.11s (new)

I considered simply disallowing too many aliases. E.g. microsoft appearently
sometimes ignores entries after the ninth [1], and other systems set stringent
limits [2,3], but the recommended way to get around that is to simply use more
lines (as is done in the sample), so this wouldn't change anything.

Even if we cannot put all those names in a reply packet, the resolution from
the alias to the address should work. I think cases where people define lots
and lots of aliases through some programmatic interface is realistic, for
example for a blocklist, and such a file shouldn't bring resolved down to its
knees.

[1] https://superuser.com/questions/932112/is-there-a-maximum-number-of-hostname-aliases-per-line-in-a-windows-hosts-file
[2] https://library.netapp.com/ecmdocs/ECMP1516135/html/GUID-C6F3B6D1-232D-44BB-A76C-3304C19607A3.html
[3] https://www.ibm.com/docs/en/zos/2.1.0?topic=optional-creating-etchosts

3 years agobasic/strv: add optimizable version of strv_push/consume/extend
Zbigniew Jędrzejewski-Szmek [Thu, 19 May 2022 07:50:48 +0000 (09:50 +0200)] 
basic/strv: add optimizable version of strv_push/consume/extend

This will be helpful in cases where we are repeatedly adding entries
to a long strv and want to skip the iteration over old entries leading
to quadratic behaviour.

Note that we don't want to calculate the length if not necessary, so
the calculation is delayed until after we've checked that value is not
NULL.

3 years agoportabled: wrap long lines and fix typo in error message 23454/head
Zbigniew Jędrzejewski-Szmek [Fri, 20 May 2022 12:53:50 +0000 (14:53 +0200)] 
portabled: wrap long lines and fix typo in error message

3 years agoportabled: refuse queries for empty image name
Zbigniew Jędrzejewski-Szmek [Fri, 20 May 2022 12:53:22 +0000 (14:53 +0200)] 
portabled: refuse queries for empty image name

I took inspiration from pid1:
bus_unit_find()
  → find_unit()
    → manager_load_unit_from_dbus_path()
      → unit_name_from_dbus_path()
        → !startswith(path, "/org/freedesktop/systemd1/unit/")
          → return -EINVAL
          ←
        ←
      ←
    ← if (r < 0) return 0
  ← 0


i.e. we return 0 when queried for "/org/freedesktop/systemd1/unit".

Fixes #23445.

3 years agoshared/extension-release: drop unnecessary strna() wrapper
Yu Watanabe [Fri, 20 May 2022 07:49:14 +0000 (16:49 +0900)] 
shared/extension-release: drop unnecessary strna() wrapper

These are not NULL.

3 years agoportable: reject root directories without an ID field in os-release 23452/head
Luca Boccassi [Fri, 20 May 2022 11:24:45 +0000 (12:24 +0100)] 
portable: reject root directories without an ID field in os-release

We always require at least ID to be set in os-release, reject
and propagate error to the caller instead of asserting later

3 years agodissect: ID from os-release should be non-empty, not just non-NULL
Luca Boccassi [Fri, 20 May 2022 11:05:34 +0000 (12:05 +0100)] 
dissect: ID from os-release should be non-empty, not just non-NULL

3 years agomacro: Use C11 static_assert 23451/head
Jan Janssen [Fri, 20 May 2022 10:49:50 +0000 (12:49 +0200)] 
macro: Use C11 static_assert

Now that we require C11 everywhere, we can always use static_assert.

3 years agoboot: Build with C11 too
Jan Janssen [Fri, 20 May 2022 10:47:43 +0000 (12:47 +0200)] 
boot: Build with C11 too

3 years agokernel-install: fix detection of entry-token if $BOOT_ROOT is configured
Zbigniew Jędrzejewski-Szmek [Thu, 19 May 2022 13:34:32 +0000 (15:34 +0200)] 
kernel-install: fix detection of entry-token if $BOOT_ROOT is configured

If $BOOT_ROOT is specified, but entry-token not, we'd skip the detection
altogether, effectively defaulting to entry-token=machine-id.
The case where $BOOT_ROOT was not specied, but entry-token was configured
was handled correctly.
This patch makes the handling of both symmetrical, i.e. will only set what
wasn't configured.

3 years agokernel-install: debug the configuration detection if --verbose
Zbigniew Jędrzejewski-Szmek [Thu, 19 May 2022 12:50:07 +0000 (14:50 +0200)] 
kernel-install: debug the configuration detection if --verbose

No changes to behaviour, but let's print everything out as we discover it.

The docs say that BOOT_ROOT can be specified by the environment. I have
it locally in /etc/kernel/install.conf, and then the override doesn't work.
It'd be nice to handle such cases more reliably.

3 years agoAdd sys/stat.h for S_IFDIR
Khem Raj [Thu, 19 May 2022 18:01:04 +0000 (11:01 -0700)] 
Add sys/stat.h for S_IFDIR

Fixes
../git/src/shared/mkdir-label.c:13:61: error: use of undeclared identifier 'S_IFDIR'
        r = mac_selinux_create_file_prepare_at(dirfd, path, S_IFDIR);

Signed-off-by: Khem Raj <raj.khem@gmail.com>
3 years agosd-bus: Fix introspect memory leak
Daan De Meyer [Thu, 19 May 2022 21:59:50 +0000 (23:59 +0200)] 
sd-bus: Fix introspect memory leak

We have to free the contents of the set on top of the set itself.

Fixes #23443.

3 years agokernel-install: bail if machine id generation fails
Zbigniew Jędrzejewski-Szmek [Thu, 19 May 2022 12:43:03 +0000 (14:43 +0200)] 
kernel-install: bail if machine id generation fails

The call is unlikely to fail, but systemd-id128 might not be installed.
We shouldn't continue with the empty string.

3 years agokernel-install: actually export KERNEL_INSTALL_VERBOSE
Zbigniew Jędrzejewski-Szmek [Thu, 19 May 2022 12:23:48 +0000 (14:23 +0200)] 
kernel-install: actually export KERNEL_INSTALL_VERBOSE

:(

3 years agoversion comparisons: stop using locale-dependent isdigit() 23414/head
Zbigniew Jędrzejewski-Szmek [Thu, 19 May 2022 07:05:48 +0000 (09:05 +0200)] 
version comparisons: stop using locale-dependent isdigit()

The docs are not entirely clear what glyphs qualify as digits.
The function is supposed to be locale-dependent, but I couldn't
get it to return true on any non-ascii digits I tried.
But it's better to be safe than sorry, let's use our trivial
replacement instead.

3 years agotest-compare-versions: basic test for systemd-analyze compare-versions
Zbigniew Jędrzejewski-Szmek [Wed, 18 May 2022 08:40:54 +0000 (10:40 +0200)] 
test-compare-versions: basic test for systemd-analyze compare-versions

3 years agoanalyze: add compare-versions
Zbigniew Jędrzejewski-Szmek [Tue, 17 May 2022 14:28:45 +0000 (16:28 +0200)] 
analyze: add compare-versions

The interface, output, and exit status convention are all taken directly from
rpmdev-vercmp and dpkg --compare-versions. The implementation is different
though. See test-string-util for a list of known cases where we compare
strings incompatibly.

The idea is that this string comparison function will be declared as "the"
method to use for boot entry ordering in the specification and similar
uses. Thus it's nice to allow users to compare strings.

3 years agoMerge pull request #23432 from bnf/docs-relative-links
Zbigniew Jędrzejewski-Szmek [Thu, 19 May 2022 06:54:49 +0000 (08:54 +0200)] 
Merge pull request #23432 from bnf/docs-relative-links

docs: use relative links

3 years agoportable: Remove unnecessary assert()
Daan De Meyer [Wed, 18 May 2022 22:44:31 +0000 (00:44 +0200)] 
portable: Remove unnecessary assert()

Fixes #23433

matches is plumbed through until it finally gets used in unit_match()
which can deal with NULL matches so the assert() is unnecessary and
can be removed.

The two call sites of extract_image_and_extensions() also don't
assert() on matches either.

3 years agotest: double timeout of TEST-50-DISSECT
Luca Boccassi [Wed, 18 May 2022 23:15:30 +0000 (00:15 +0100)] 
test: double timeout of TEST-50-DISSECT

It times out on slow CIs near the end of the test, eg:

[  553.539368] kernel: loop_reread_partitions: partition scan of loop3 () failed (rc=-5)
TEST-50-DISSECT: (timeout)

https://autopkgtest.ubuntu.com/results/autopkgtest-focal-upstream-systemd-ci-systemd-ci/focal/ppc64el/s/systemd-upstream/20220518_172659_bf20f@/log.gz

3 years agoanalyze: allow verbs to return positive failure
Zbigniew Jędrzejewski-Szmek [Tue, 17 May 2022 14:25:06 +0000 (16:25 +0200)] 
analyze: allow verbs to return positive failure

No functional change is intended. The verbs where it wasn't immediately
clear if the success exit status is 0 or >= 0 are changed to explicitly
return 0. (I think it's better to be explicit than to rely on some call
stack always returning 0 on success.)

Some other functions are cleaned up to be more idiomatic.

3 years agoanalyze: use automatic cleanup in one more place
Zbigniew Jędrzejewski-Szmek [Wed, 18 May 2022 16:30:36 +0000 (18:30 +0200)] 
analyze: use automatic cleanup in one more place