]> git.ipfire.org Git - thirdparty/systemd.git/log
thirdparty/systemd.git
3 years agoMerge pull request #20368 from keszybz/drop-assert-not-reached-text
Luca Boccassi [Tue, 3 Aug 2021 20:15:25 +0000 (21:15 +0100)] 
Merge pull request #20368 from keszybz/drop-assert-not-reached-text

Drop the text argument from assert_not_reached()

3 years agoMerge pull request #20371 from bluca/coverity
Luca Boccassi [Tue, 3 Aug 2021 20:14:31 +0000 (21:14 +0100)] 
Merge pull request #20371 from bluca/coverity

Two small coverity fixes

3 years agotree-wide: voidify unchecked close_nointr calls 20371/head
Luca Boccassi [Tue, 3 Aug 2021 14:00:40 +0000 (15:00 +0100)] 
tree-wide: voidify unchecked close_nointr calls

These have ignored the return value forever. Two are public APIs so
we can't really change what they return anyway, and the other one is
a cleanup path and the existing error code is more important.

CID#1461274
CID#1461275
CID#1461276

3 years agocreds: assert that credential read from file fits in data struct
Luca Boccassi [Tue, 3 Aug 2021 13:53:31 +0000 (14:53 +0100)] 
creds: assert that credential read from file fits in data struct

Coverity CID#1458114

3 years agobasic/log: use appropriate glyph in log_assert_failed_unreachable() 20368/head
Zbigniew Jędrzejewski-Szmek [Tue, 3 Aug 2021 13:46:05 +0000 (15:46 +0200)] 
basic/log: use appropriate glyph in log_assert_failed_unreachable()

Per popular demand.

3 years agoDrop the text argument from assert_not_reached()
Zbigniew Jędrzejewski-Szmek [Tue, 27 Jul 2021 10:27:28 +0000 (12:27 +0200)] 
Drop the text argument from assert_not_reached()

In general we almost never hit those asserts in production code, so users see
them very rarely, if ever. But either way, we just need something that users
can pass to the developers.

We have quite a few of those asserts, and some have fairly nice messages, but
many are like "WTF?" or "???" or "unexpected something". The error that is
printed includes the file location, and function name. In almost all functions
there's at most one assert, so the function name alone is enough to identify
the failure for a developer. So we don't get much extra from the message, and
we might just as well drop them.

Dropping them makes our code a tiny bit smaller, and most importantly, improves
development experience by making it easy to insert such an assert in the code
without thinking how to phrase the argument.

3 years agoMerge pull request #20346 from poettering/strlen-unsigned-fix
Yu Watanabe [Tue, 3 Aug 2021 02:03:29 +0000 (11:03 +0900)] 
Merge pull request #20346 from poettering/strlen-unsigned-fix

CONST_MAX() integer size fix

3 years agotime-set: adjust system clock if rtc is far in future
Egor Ignatov [Wed, 28 Jul 2021 09:13:31 +0000 (12:13 +0300)] 
time-set: adjust system clock if rtc is far in future

3 years agoMerge pull request #20352 from poettering/copy-tweaks
Luca Boccassi [Mon, 2 Aug 2021 19:31:42 +0000 (20:31 +0100)] 
Merge pull request #20352 from poettering/copy-tweaks

various tweaks to copy.c

3 years agoUse correct `<poll.h>` include
David Seifert [Mon, 2 Aug 2021 14:09:10 +0000 (16:09 +0200)] 
Use correct `<poll.h>` include

* `<sys/poll.h>` is not specified in POSIX

3 years agobtrfs-util: expose COPY_SIGTERM for btrfs_snapshot() too 20352/head
Lennart Poettering [Fri, 26 Feb 2021 14:00:29 +0000 (15:00 +0100)] 
btrfs-util: expose COPY_SIGTERM for btrfs_snapshot() too

3 years agocopy: add COPY_SIGTERM, matching the existing COPY_SIGINT
Lennart Poettering [Fri, 26 Feb 2021 14:10:24 +0000 (15:10 +0100)] 
copy: add COPY_SIGTERM, matching the existing COPY_SIGINT

3 years agocopy: add COPY_SYNCFS flag
Lennart Poettering [Fri, 26 Feb 2021 09:27:00 +0000 (10:27 +0100)] 
copy: add COPY_SYNCFS flag

When copying large directory trees it should be a better idea to sync
the whole fs once when we are done instead of individually for each
file, hence add COPY_SYNCFS.

As opposed to COPY_FSYNC/COPY_FSYNC_FULL this only really applies to the
top-level directory, after completion of the whole copy.

3 years agocopy: optionally fsync() files after copying them
Lennart Poettering [Mon, 1 Feb 2021 16:48:32 +0000 (17:48 +0100)] 
copy: optionally fsync() files after copying them

As a safety precaution it makes sense to fsync() files after copying
them, and maybe even the directories they are contained in. Let's add a
flag for these two cases.

3 years agocopy: tighten destination checks when copying files
Lennart Poettering [Mon, 1 Feb 2021 16:45:25 +0000 (17:45 +0100)] 
copy: tighten destination checks when copying files

let's make sure we only operate on regular files when copying files.

Also, make sure to copy file attributes only over if target is a regular
file (so that copying a file to /dev/null won't alter the access
mode/ownership of that device node...)

3 years agocopy: move to single clean-up path
Lennart Poettering [Mon, 1 Feb 2021 16:37:11 +0000 (17:37 +0100)] 
copy: move to single clean-up path

(This might not look like a big improvement, but will shortly, when we
add fsync() support to the copy logic, at which point there are more
error paths we can unify that way.)

While we are at it, tweak a clean-up path: only unlink a copied file if
we are definitely the ones who created them, i.e. if O_EXCL is set.

3 years agomachined-varlink: fix double free
David Tardon [Mon, 2 Aug 2021 11:31:04 +0000 (13:31 +0200)] 
machined-varlink: fix double free

Fixes: #18599
3 years agoUse correct `<fcntl.h>` include
David Seifert [Mon, 2 Aug 2021 10:41:38 +0000 (12:41 +0200)] 
Use correct `<fcntl.h>` include

* `<sys/fcntl.h>` is not specified in POSIX

3 years agocryptsetup: unbreak CI build
Lennart Poettering [Fri, 30 Jul 2021 20:19:23 +0000 (22:19 +0200)] 
cryptsetup: unbreak CI build

PR #20176 broke building of the cryptsetup token logic. This wasn't
noticed before the PR was merged, because the only CIs new enough to be
able to build the token logic (the Fedora Rawhide ones) didn't actually
run at all on the PR.

Let's add the missing hookup for the TPM2 PCR bank logic also to the
token module, to make the CI pass again.

3 years agocoredump/stacktrace.c: avoid crash on binaries without NHDR
Sergei Trofimovich [Sat, 31 Jul 2021 12:07:54 +0000 (13:07 +0100)] 
coredump/stacktrace.c: avoid crash on binaries without NHDR

Observed as a crash on binaries built with gcc-master:

```
 3  0x00005573b8841d6a in parse_package_metadata (name=name@entry=0x5573b901a620 "/a", id_json=0x0,
    elf=0x5573b9028730, c=c@entry=0x7fffc688f790) at ../systemd-stable-249.2/src/coredump/stacktrace.c:157
 4  0x00005573b884209e in module_callback (mod=0x7fffc688f6c0, userdata=<optimized out>,
    name=0x5573b901a620 "/a", start=<optimized out>, arg=0x7fffc688f790)
    at ../systemd-stable-249.2/src/coredump/stacktrace.c:306
 5  0x00007f56d60dcbd5 in dwfl_getmodules (dwfl=0x5573b901fda0,
    callback=callback@entry=0x5573b8841eb0 <module_callback>, arg=arg@entry=0x7fffc688f790, offset=offset@entry=0)
    at ../../elfutils-0.185/libdwfl/dwfl_getmodules.c:86
 6  0x00005573b884231b in parse_core (ret_package_metadata=0x7fffc688f848, ret=0x7fffc688f850,
    executable=0x7fffc688f790 "\200\332\001\271sU", fd=21) at ../systemd-stable-249.2/src/coredump/stacktrace.c:366
 7  coredump_parse_core (fd=fd@entry=6, executable=0x7fffc688f790 "\200\332\001\271sU", ret=ret@entry=0x7fffc688f850,
    ret_package_metadata=ret_package_metadata@entry=0x7fffc688f848)
    at ../systemd-stable-249.2/src/coredump/stacktrace.c:406
 8  0x00005573b883f897 in submit_coredump (context=context@entry=0x7fffc688fa10, iovw=iovw@entry=0x7fffc688f990,
    input_fd=input_fd@entry=5) at ../systemd-stable-249.2/src/coredump/coredump.c:827
 9  0x00005573b883d339 in process_socket (fd=3) at ../systemd-stable-249.2/src/coredump/coredump.c:1041
 10 run (argv=<optimized out>, argc=-964101648) at ../systemd-stable-249.2/src/coredump/coredump.c:1416
 11 main (argc=-964101648, argv=<optimized out>) at ../systemd-stable-249.2/src/coredump/coredump.c:1422
```

Happens only on enabled elfutils symbolizer.

Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
3 years agosignal-util: fix typo
Lennart Poettering [Fri, 30 Jul 2021 19:54:21 +0000 (21:54 +0200)] 
signal-util: fix typo

Noticed by @behrmann: https://github.com/systemd/systemd/pull/20156#discussion_r667451006

3 years agoMerge pull request #20121 from poettering/bootctl-auto
Lennart Poettering [Fri, 30 Jul 2021 19:36:40 +0000 (21:36 +0200)] 
Merge pull request #20121 from poettering/bootctl-auto

units: run "bootctl update" automatically after boot, to ensure boot loader is regularly updated

3 years agoMerge pull request #20172 from poettering/import-util-tweaks
Lennart Poettering [Fri, 30 Jul 2021 17:05:06 +0000 (19:05 +0200)] 
Merge pull request #20172 from poettering/import-util-tweaks

Import-util: URL processing tweaks

3 years agoMerge pull request #20170 from poettering/moar-glyphs
Lennart Poettering [Fri, 30 Jul 2021 17:03:59 +0000 (19:03 +0200)] 
Merge pull request #20170 from poettering/moar-glyphs

util: define more emoji glyphs

3 years agotpm2-util: auto-detect supported PCR banks
Lennart Poettering [Thu, 8 Jul 2021 11:52:21 +0000 (13:52 +0200)] 
tpm2-util: auto-detect supported PCR banks

Previously, we'd encode PCR policies strictly with the SHA256 PCR bank
set. However, as it appears not all hw implement those. Sad.

Let's add some minimal logic to auto-detect supported PCR banks: if
SHA256 is supported, use that. But if not, automatically fall back to
SHA1.

This then changes both the LUKS code, and the credentials code to
serialize the selected bank, along with the rest of the data in order to
make this robust.

This extends the LUK2 JSON metadata in a compatible way. The credentials
encryption format is modified in an incompatible way however, but given
that this is not part of any official release should be OK.

Fixes: #20134
3 years agoupdate TODO 20121/head
Lennart Poettering [Mon, 5 Jul 2021 12:37:04 +0000 (14:37 +0200)] 
update TODO

3 years agoboot: optionally update sd-boot on boot
Lennart Poettering [Fri, 2 Jul 2021 13:04:10 +0000 (15:04 +0200)] 
boot: optionally update sd-boot on boot

Boot loaders are software like any other, and hence muse be updated in
regular intervals. Let's add a simple (optional) service that updates
sd-boot automatically from the host if it is found installed but
out-of-date in the ESP.

Note that traditional distros probably should invoke "bootctl update"
directly from the package scripts whenver they update the sd-boot
package. This new service is primarily intended for image-based update
systems, i.e. where the rootfs or /usr are atomically updated in A/B
style and where the current boot loader should be synced into the ESP
from the currently booted image every now and then. It can also act as
safety net if the packaging scripts in classic systems are't doing the
bootctl update stuff themselves.

Since updating boot loaders mit be a tiny bit risky (even though we try
really hard to make them robust, by fsck'ing the ESP and mounting it only on
demand, by doing updates mostly as single file updates and by fsync()ing
heavily) this is an optional feature, i.e. subject to "systemctl
enable". However, since it's the right thing to do I think, it's enabled
by default via the preset logic.

Note that the updating logic is implemented gracefully: i.e. it's a NOP
if the boot loader is already new enough, or was never installed.

3 years agobootctl: tweak "bootctl update" to be a NOP when boot loader is already current and...
Lennart Poettering [Fri, 2 Jul 2021 13:16:52 +0000 (15:16 +0200)] 
bootctl: tweak "bootctl update" to be a NOP when boot loader is already current and --graceful is given

Previously, the "bootctl update" logic would refrain from downrgading a
boot loader, but if the boot loader that is installed already matched
the version we could install we'd install it anyway, under the
assumption this was effectively without effect. This behaviour was handy
while developing boot loaders, since installing a modified boot loader
didn't require a version bump.

However, outside of the systems of boot loader developers I don't think
this behaviour makes much sense: we should always emphasize doing
minimal changes to the ESP, hence when an update is supposedly not
necessary, then don't do it. Only update if it really makes sense, to
minimize writes to the ESP. Updating the boot loader is a good thing
after all, but doing so redundantly is not.

Also, downgrade the message about this to LOG_NOTICE, given this
shouldn't be a reason to log.

Finally, exit cleanly in this cases (or if another boot loader is
detected)

3 years agotest: add simple test for import-util 20172/head
Lennart Poettering [Mon, 14 Jun 2021 20:41:58 +0000 (22:41 +0200)] 
test: add simple test for import-util

3 years agoimport-util: tweak url patching helper
Lennart Poettering [Tue, 2 Feb 2021 21:37:36 +0000 (22:37 +0100)] 
import-util: tweak url patching helper

let's share some code between import_url_last_component() and
import_url_change_last_component(), and make sure we never eat up the
hostname component of the URL when parsing out the last component.

Let's also make import_url_change_last_component() more generic so that
we can also use it for append components to paths, instead of replacing
suffixes.

3 years agoutil: add one more helper for generating colored check mark glyphs 20170/head
Lennart Poettering [Wed, 30 Dec 2020 20:49:10 +0000 (21:49 +0100)] 
util: add one more helper for generating colored check mark glyphs

This one is useful for a outputs with a slightly more "positive"
outlook, i.e. where only the checkmarks are shown but the crossmarks are
replaced by spaces.

(Usecase: a larger table with many checkmarks, where the red crossmarks
might just be too much negative noise)

3 years agoglyph-util: add three more emojis to emoji list
Lennart Poettering [Fri, 25 Jun 2021 09:50:54 +0000 (11:50 +0200)] 
glyph-util: add three more emojis to emoji list

3 years agorm-rf: refactor rm_rf_children(), split out body of directory iteration loop
Lennart Poettering [Tue, 26 Jan 2021 15:30:06 +0000 (16:30 +0100)] 
rm-rf: refactor rm_rf_children(), split out body of directory iteration loop

This splits out rm_rf_children_inner() as body of the loop. We can use
that to implement rm_rf_child() for deleting one specific entry in a
directory.

3 years agomacro: change DECIMAL_STR_WIDTH() return type to size_t, like strlen() and so on 20346/head
Lennart Poettering [Thu, 29 Jul 2021 16:47:04 +0000 (18:47 +0200)] 
macro: change DECIMAL_STR_WIDTH() return type to size_t, like strlen() and so on

3 years agomacro: sizeof() returns size_t, and that's good
Lennart Poettering [Thu, 29 Jul 2021 15:45:19 +0000 (17:45 +0200)] 
macro: sizeof() returns size_t, and that's good

Now that CONST_MAX() is a bit more foregiving, let's stick to the native
return type of sizeof() everywhere, which is size_t, instead of casting
to "unsigned", so that on the common archs we don't unnecessarily lose
the upper 32bits.

This semi-reverts d3e40294572512810c9329933a488619e7ce22fd.

3 years agomacro: relax CONST_MAX() type check a tiny bit
Lennart Poettering [Thu, 29 Jul 2021 16:39:09 +0000 (18:39 +0200)] 
macro: relax CONST_MAX() type check a tiny bit

This checked for strict type compatibility so far, which mean CONST_MAX()
couldn't be used on two differently signed integers, even though
conceptually there's nothing wrong with allowing that here, as C
correctly picks the larger type in the ternary op.

hence, let's explicitly whitelist integer comparisons here, as long as
the signedness matches.

3 years agoMerge pull request #20348 from poettering/free-and-replace-double-eval
Luca Boccassi [Fri, 30 Jul 2021 10:38:13 +0000 (11:38 +0100)] 
Merge pull request #20348 from poettering/free-and-replace-double-eval

make free_and_replace() double eval free

3 years agotest: correctly detect ASan on s390x
Frantisek Sumsal [Thu, 29 Jul 2021 16:44:51 +0000 (18:44 +0200)] 
test: correctly detect ASan on s390x

s390x uses BRAS(L) instead of CALL(Q), e.g.:

```
 1009528: c0 e5 ff ff f8 a0  brasl %r14,1008668 <__asan_report_load1@plt>
 10095f0: c0 e5 ff ff ea ec  brasl %r14,1006bc8 <__asan_stack_malloc_4@plt>
 10097f8: c0 e5 ff ff f8 f8  brasl %r14,10089e8 <__asan_report_load8@plt>
```

x86_64 for reference:

```
  4011f3: e8 48 fe ff ff        callq  401040 <__asan_report_load1@plt>
  401227: e8 24 fe ff ff        callq  401050 <__asan_report_load8@plt>
  401251: e8 da fd ff ff        callq  401030 <__asan_init@plt>
```

3 years agomain: fix type confusion in do_reexecute()
Lennart Poettering [Thu, 29 Jul 2021 15:22:03 +0000 (17:22 +0200)] 
main: fix type confusion in do_reexecute()

Let's use size_t for stuff we count in memory. This doesn't matter much,
but is certainly more correct and less eyebrow-raising.

Follow-up for: 846f1da465beda990c1c01346311393f485df467

See: https://github.com/systemd/systemd/pull/20273#discussion_r679250180

3 years agoxdg-autostart-service: rely on the new double-eval-free free_and_replace() 20348/head
Lennart Poettering [Thu, 29 Jul 2021 19:13:03 +0000 (21:13 +0200)] 
xdg-autostart-service: rely on the new double-eval-free free_and_replace()

These semi-reverts 2744c7bb0176dc6b86a69acd4c449ea9e269e097

3 years agoalloc-util: drop double eval from free_and_replace()
Lennart Poettering [Thu, 29 Jul 2021 19:05:38 +0000 (21:05 +0200)] 
alloc-util: drop double eval from free_and_replace()

Inspired by: 2744c7bb0176dc6b86a69acd4c449ea9e269e097

3 years agomeson: add the versiondep to the static lib deplist as well
Frantisek Sumsal [Thu, 29 Jul 2021 10:46:06 +0000 (12:46 +0200)] 
meson: add the versiondep to the static lib deplist as well

Follow-up to 99c645b81aa47899ae3e0f920947a7d86cca5a86.

3 years agosystemctl: allow set-property to be called with a glob pattern
Zbigniew Jędrzejewski-Szmek [Wed, 28 Jul 2021 10:57:10 +0000 (12:57 +0200)] 
systemctl: allow set-property to be called with a glob pattern

We call "systemctl set-property … Markers=+needs-restart" and this should
also work for globs, e.g. "user@*.service" or "syncthing@*.service".

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

3 years agoMerge pull request #20337 from poettering/oom-adj-fix
Lennart Poettering [Thu, 29 Jul 2021 08:47:10 +0000 (10:47 +0200)] 
Merge pull request #20337 from poettering/oom-adj-fix

make oom_score_adjust_is_valid() shared again

3 years agoMerge pull request #20339 from poettering/bus-vtable-indent-fix
Lennart Poettering [Thu, 29 Jul 2021 08:46:50 +0000 (10:46 +0200)] 
Merge pull request #20339 from poettering/bus-vtable-indent-fix

sd-bus: fix indentation in macros

3 years agosd-bus: add brief inline comment explaining the "reserved" field in the bus vtable... 20339/head
Lennart Poettering [Wed, 28 Jul 2021 18:44:49 +0000 (20:44 +0200)] 
sd-bus: add brief inline comment explaining the "reserved" field in the bus vtable structure

Follow-up for: #20253

3 years agosd-bus: fix indentation in macros
Lennart Poettering [Wed, 28 Jul 2021 18:38:31 +0000 (20:38 +0200)] 
sd-bus: fix indentation in macros

We use multiples of 8 spaces indentation in our C code, do it here too.

3 years agomanager: reexecute on SIGRTMIN+25, user instances only
Franck Bui [Fri, 23 Jul 2021 09:12:03 +0000 (11:12 +0200)] 
manager: reexecute on SIGRTMIN+25, user instances only

Before this patch, there was no way to request all running user instances for
reexecuting. However this can be useful especially during package updates
otherwise user instances are never updated and keep running a potentially very
old version of the binaries.

Now assuming that we have enough priviledge, it's possible to request
reexecution of all user instances:

  systemctl kill --signal=SIGRTMIN+25 "user@*.service"

Note that this request is obviously asynchronous as it relies on a
signal. Keeping "systemctl kill" as the only interface should be good enough to
make this obvious and that's the reason why another interface, such as
"systemctl --global daemon-reexec" has not been considered.

PID1 already uses SIGTERM for reexecuting hence sending it SIGRTMIN+25 is a
nop.

3 years agoparse-util: use oom_score_adjust_is_valid() at one more place 20337/head
Lennart Poettering [Wed, 28 Jul 2021 16:23:50 +0000 (18:23 +0200)] 
parse-util: use oom_score_adjust_is_valid() at one more place

3 years agoRevert "Make oom_score_adjust_is_valid() static"
Lennart Poettering [Wed, 28 Jul 2021 16:22:00 +0000 (18:22 +0200)] 
Revert "Make oom_score_adjust_is_valid() static"

This reverts commit 6bf3c6c9007ca87376d5dff1e029186a38736cdc.

3 years agoupdate TODO
Lennart Poettering [Wed, 28 Jul 2021 16:20:46 +0000 (18:20 +0200)] 
update TODO

3 years agoadded missing handling of button release events
Yegor Alexeyev [Sun, 25 Jul 2021 12:08:41 +0000 (15:08 +0300)] 
added missing handling of button release events

3 years agoUse SKU to identify Dell clamshell models for accelerometer properties
Yao Wei [Tue, 27 Jul 2021 06:05:28 +0000 (14:05 +0800)] 
Use SKU to identify Dell clamshell models for accelerometer properties

As per request from Dell, we need to use sku property of modalias that
is patched into linux 5.13 for model identification:

  https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e26f023e01ef26b4138bc1099af309bdc4523d23

3 years agoMerge pull request #20326 from keszybz/meson-0.53.2
Luca Boccassi [Wed, 28 Jul 2021 12:30:37 +0000 (13:30 +0100)] 
Merge pull request #20326 from keszybz/meson-0.53.2

Use some more new meson features

3 years agoMerge pull request #20311 from keszybz/manpage-l10n-report
Luca Boccassi [Wed, 28 Jul 2021 11:37:39 +0000 (12:37 +0100)] 
Merge pull request #20311 from keszybz/manpage-l10n-report

Man pages cleanups

3 years agoci: bump meson version in LGTM
Frantisek Sumsal [Wed, 28 Jul 2021 08:26:29 +0000 (10:26 +0200)] 
ci: bump meson version in LGTM

Otherwise LGTM fails to detect the build system:

```
[2021-07-27 23:18:47] [build-stdout] The Meson build system
[2021-07-27 23:18:47] [build-stdout] Version: 0.51.2
[2021-07-27 23:18:47] [build-stdout] Source dir: /opt/src
[2021-07-27 23:18:47] [build-stdout] Build dir: /opt/src/_lgtm_build_dir
[2021-07-27 23:18:47] [build-stdout] Build type: native build
[2021-07-27 23:18:47] [build-stdout] meson.build:3:0: ERROR: Meson version is 0.51.2 but project requires >= 0.53.2
[2021-07-27 23:18:47] [build-stdout] A full log can be found at /opt/src/_lgtm_build_dir/meson-logs/meson-log.txt
```

3 years agoman/systemctl: rework descriptions of bind and mount-image 20311/head
Zbigniew Jędrzejewski-Szmek [Tue, 27 Jul 2021 07:42:09 +0000 (09:42 +0200)] 
man/systemctl: rework descriptions of bind and mount-image

The text used "unit's view" to mean mount namespace. But we talk about
mount namespaces in the later part of the paragraph anyway, so trying to
use an "approachable term" only makes the whole thing harder to understand.
Let's use the precise term.

Some paragraph-breaking and re-indentation is done too.

3 years agomeson: use meson's summary() 20326/head
Zbigniew Jędrzejewski-Szmek [Wed, 28 Jul 2021 08:04:01 +0000 (10:04 +0200)] 
meson: use meson's summary()

The output is similar to our hand-crafted status message, but it's nice to use
the built-in functionality. After all, it was amended during development to
support our use case.

3 years agoMerge pull request #20319 from keszybz/meson-0.53.2
Luca Boccassi [Tue, 27 Jul 2021 22:15:18 +0000 (23:15 +0100)] 
Merge pull request #20319 from keszybz/meson-0.53.2

Bump required meson version to 0.53.2

3 years agoMerge pull request #20318 from poettering/seccomp-getrandom-fix
Luca Boccassi [Tue, 27 Jul 2021 20:17:38 +0000 (21:17 +0100)] 
Merge pull request #20318 from poettering/seccomp-getrandom-fix

seccomp: getrandom() fix + more

3 years agomeson: use alias_target for doc update commands
Zbigniew Jędrzejewski-Szmek [Tue, 27 Jul 2021 18:11:41 +0000 (20:11 +0200)] 
meson: use alias_target for doc update commands

This undoes part of 4c890ad3cc7b3445683d7b52bc00e4a58bef5e94: the
implementations of update-dbus-docs and update-man-rules are moved back to
man/meson.build, and alias_target() is used to keep the visible target names
unchanged.

The rules for man pages are reworked so that it's possible to invoke the
targets even if xstlproc is not available. After all, xsltproc is only needed
for the final formatted output, and not other processing.

3 years agomeson: use alias_target in one place
Zbigniew Jędrzejewski-Szmek [Tue, 27 Jul 2021 17:58:55 +0000 (19:58 +0200)] 
meson: use alias_target in one place

It was added in meson 0.52.0, and fits very nicely here.
See https://mesonbuild.com/Release-notes-for-0-52-0.html#alias_target.

3 years agomeson: use a/b instead of join_paths(a,b)
Zbigniew Jędrzejewski-Szmek [Tue, 27 Jul 2021 17:32:35 +0000 (19:32 +0200)] 
meson: use a/b instead of join_paths(a,b)

It is nicer and shorter.

3 years agomeson: use maps for udev program paths 20319/head
Zbigniew Jędrzejewski-Szmek [Tue, 27 Jul 2021 15:48:53 +0000 (17:48 +0200)] 
meson: use maps for udev program paths

3 years agomeson: adjust comment about find_program() usage
Zbigniew Jędrzejewski-Szmek [Tue, 27 Jul 2021 14:20:40 +0000 (16:20 +0200)] 
meson: adjust comment about find_program() usage

The FIXME was not correct: with 'dirs' we'd put the fixed path first
(see the docs for find_program()).

3 years agomeson: use project_build_root
Zbigniew Jędrzejewski-Szmek [Tue, 27 Jul 2021 14:19:35 +0000 (16:19 +0200)] 
meson: use project_build_root

As documented in /meson.build where the variable is defined,
meson.build_root() doesn't work as expected with project nesting. I have
no idea why anyone would want to embed systemd in another meson project,
but let's use the variable if we have it.

3 years agoseccomp: move sched_getaffinity() from @system-service to @default 20318/head
Lennart Poettering [Tue, 27 Jul 2021 15:11:09 +0000 (17:11 +0200)] 
seccomp: move sched_getaffinity() from @system-service to @default

See: https://github.com/systemd/systemd/pull/20191#issuecomment-881982739

In general, we shouldn't blanket move syscalls like this into @default,
given that glibc actually does have fallbacks, afaics. However, as
long as the syscalls are "read-only" and thus benign, I figure it's a
safe thing to do. But we should probably stick to a "if in doubt, don't"
rule, and put these syscalls in @system-service as default, but not into
@default.

I think in the real world @system-service is the sensible group people
should use, and not @default actually.

3 years agoseccomp: drop getrandom() from @system-service
Lennart Poettering [Tue, 27 Jul 2021 15:10:21 +0000 (17:10 +0200)] 
seccomp: drop getrandom() from @system-service

It's included in @default now, since
14f4b1b568907350d023d1429c1aa4aaa8925f22, and since @system-service
pulls that in we can drop it from @system-service.

Follow-up for #20191

3 years agomeson: require 0.53.2 and drop some workarounds for old meson
Zbigniew Jędrzejewski-Szmek [Tue, 27 Jul 2021 14:16:07 +0000 (16:16 +0200)] 
meson: require 0.53.2 and drop some workarounds for old meson

Ubuntu Bionic 18.04 has 0.45, so it was below the previously required
minimum version already. Focal 20.04 has 0.53.2. Let's require that
and use various features that are available.

3 years agomeson: add a missing versiondep to libcryptsetup-plugins target
Frantisek Sumsal [Tue, 27 Jul 2021 10:19:10 +0000 (12:19 +0200)] 
meson: add a missing versiondep to libcryptsetup-plugins target

Otherwise the build sometimes fails in a racy way:

```
[274/1850] Compiling C object src/cryptsetup/cryptsetup-tokens/libcryptsetup-token-systemd-tpm2_static.a.p/cryptsetup-token-systemd-tpm2.c.o
FAILED: src/cryptsetup/cryptsetup-tokens/libcryptsetup-token-systemd-tpm2_static.a.p/cryptsetup-token-systemd-tpm2.c.o
cc -Isrc/cryptsetup/cryptsetup-tokens/libcryptsetup-token-systemd-tpm2_static.a.p (...) -c ../build/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-tpm2.c
../build/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-tpm2.c:12:10: fatal error: version.h: No such file or directory
   12 | #include "version.h"
         |          ^~~~~~~~~~~
         compilation terminated.
```

Follow-up to d1ae38d85ae458ba8126465d25789e2721a75dba.

3 years agoCheck return value of pam_get_item/pam_get_data functions
Riccardo Schirone [Thu, 17 Jun 2021 14:39:23 +0000 (16:39 +0200)] 
Check return value of pam_get_item/pam_get_data functions

3 years agoman/tmpfiles.d: rewrite the description of age-by
Zbigniew Jędrzejewski-Szmek [Tue, 27 Jul 2021 07:39:39 +0000 (09:39 +0200)] 
man/tmpfiles.d: rewrite the description of age-by

3 years agoman: use title of docs/ pages when referring to them
Zbigniew Jędrzejewski-Szmek [Tue, 27 Jul 2021 07:39:19 +0000 (09:39 +0200)] 
man: use title of docs/ pages when referring to them

There is some inconsistency, partially caused by the awkward naming
of the docs/ pages. But let's be consistent and use the "official" title.
If we ever change plural↔singular, we should use the same form everywhere.

3 years agoman: fix assorted issues reported by the manpage-l10n project
Zbigniew Jędrzejewski-Szmek [Tue, 27 Jul 2021 07:37:29 +0000 (09:37 +0200)] 
man: fix assorted issues reported by the manpage-l10n project

Fixes #20297.

3 years agonetworkd: Include linux/netdevice.h header
Khem Raj [Mon, 26 Jul 2021 17:58:46 +0000 (10:58 -0700)] 
networkd: Include linux/netdevice.h header

This header provides definitions for NET_NAME_UNKNOWN ånd NET_NAME_ENUM
Fixes build issue found with non-glibc systems

../git/src/network/networkd-link.c:1203:52: error: 'NET_NAME_UNKNOWN' undeclared (first use in this function)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
3 years agoudev: when setting up lo, do not return an error
Zbigniew Jędrzejewski-Szmek [Mon, 26 Jul 2021 09:46:12 +0000 (11:46 +0200)] 
udev: when setting up lo, do not return an error

From #20300:
> commit 70f32a260b5ebb68c19ecadf5d69b3844896ba55
> Author: Yu Watanabe <watanabe.yu+github@gmail.com>
> Date:   Sun May 23 16:59:40 2021 +0900

>     udev/net: do not manage loopback interfaces

>     There are nothing we can configure in udevd for loopback interfaces;
>     no ethertool configs can be applied, MAC address, interface name should

> introduced a regression for 'udevadm test-builtin net_setup_link /sys/class/net/lo/'.
> Prior to this commit this command would exit with 0 whereas after this commit
> it exists with 1. This causes cloud-init on Archlinux to fail as this command
> is run by it and likely also netplan to have networkd rescan and re-apply a
> bunch of things on NICs.

I think it's reasonable to keep returning 0 here: we are intentatinally doing
nothing for the device, and that is not an error, but a (noop) success.

Fixes #20300.

3 years agoAdd support for systemd-tpm2 libcryptsetup plugin.
Ondrej Kozina [Tue, 16 Mar 2021 19:13:28 +0000 (20:13 +0100)] 
Add support for systemd-tpm2 libcryptsetup plugin.

Add support for systemd-tpm2 based LUKS2 device activation
via libcryptsetup plugin. This make the feature (tpm2 sealed
LUKS2 keyslot passphrase) usable from both systemd utilities
and cryptsetup cli.

The feature is configured via -Dlibcryptsetup-plugins combo
with default value set to 'auto'. It get's enabled automatically
when cryptsetup 2.4.0 or later is installed in build system.

3 years agoMerge pull request #20276 from keszybz/rpm-restart-wip
Luca Boccassi [Mon, 26 Jul 2021 10:02:37 +0000 (11:02 +0100)] 
Merge pull request #20276 from keszybz/rpm-restart-wip

Reload user daemons and restart user services at the end of the rpm transaction

3 years agoupdate-helper: also add "user-reexec" verb 20276/head
Zbigniew Jędrzejewski-Szmek [Fri, 23 Jul 2021 13:35:23 +0000 (15:35 +0200)] 
update-helper: also add "user-reexec" verb

This is not called from the systemd.triggers or systemd.macros files. Instead,
it would be called from the scriptlets in systemd rpm package itself, at the
place where we call systemctl daemon-reexec.

See https://github.com/systemd/systemd/pull/20289#issuecomment-885622200 .

3 years agorpm: restart user services at the end of the transaction
Zbigniew Jędrzejewski-Szmek [Wed, 7 Jul 2021 12:37:57 +0000 (14:37 +0200)] 
rpm: restart user services at the end of the transaction

This closes an important gap: so far we would reexecute the system manager and
restart system services that were configured to do so, but we wouldn't do the
same for user managers or user services.

The scheme used for user managers is very similar to the system one, except
that there can be multiple user managers running, so we query the system
manager to get a list of them, and then tell each one to do the equivalent
operations: daemon-reload, disable --now, set-property Markers=+needs-restart,
reload-or-restart --marked.

The total time that can be spend on this is bounded: we execute the commands in
parallel over user managers and units, and additionally set SYSTEMD_BUS_TIMEOUT
to a lower value (15 s by default). User managers should not have too many
units running, and they should be able to do all those operations very
quickly (<< 1s). The final restart operation may take longer, but it's done
asynchronously, so we only wait for the queuing to happen.

The advantage of doing this synchronously is that we can wait for each step to
happen, and for example daemon-reloads can finish before we execute the service
restarts, etc. We can also order various steps wrt. to the phases in the rpm
transaction.

When this was initially proposed, we discussed a more relaxed scheme with bus
property notifications. Such an approach would be more complex because a bunch
of infrastructure would have to be added to system manager to propagate
appropriate notifications to the user managers, and then the user managers
would have to wait for them. Instead, now there is no new code in the managers,
all new functionality is contained in src/rpm/. The ability to call 'systemctl
--user user@' makes this approach very easy. Also, it would be very hard to
order the user manager steps and the rpm transaction steps.

Note: 'systemctl --user disable' is only called for a user managers that are
running. I don't see a nice way around this, and it shouldn't matter too much:
we'll just leave a dangling symlink in the case where the user enabled the
service manually.

A follow-up for https://bugzilla.redhat.com/show_bug.cgi?id=1792468 and
fa97d2fcf64e0558054bee673f734f523373b146.

3 years agorpm: call +needs-restart in parallel
Zbigniew Jędrzejewski-Szmek [Thu, 22 Jul 2021 09:28:36 +0000 (11:28 +0200)] 
rpm: call +needs-restart in parallel

Some rpms install a bunch of units… It seems nicer to invoke them all in
parallel. In particular, timeouts in systemctl also run in parallel, so if
there's some communication mishap, we will wait less.

3 years agorpm: use a helper script to actually invoke systemctl commands
Zbigniew Jędrzejewski-Szmek [Thu, 22 Jul 2021 09:22:33 +0000 (11:22 +0200)] 
rpm: use a helper script to actually invoke systemctl commands

Instead of embedding the commands to invoke directly in the macros,
let's use a helper script as indirection. This has a couple of advantages:

- the macro language is awkward, we need to suffix most commands by "|| :"
  and "\", which is easy to get wrong. In the new scheme, the macro becomes
  a single simple command.
- in the script we can use normal syntax highlighting, shellcheck, etc.
- it's also easier to test the invoked commands by invoking the helper
  manually.
- most importantly, the logic is contained in the helper, i.e. we can
  update systemd rpm and everything uses the new helper. Before, we would
  have to rebuild all packages to update the macro definition.

This raises the question whether it makes sense to use the lua scriptlets when
the real work is done in a bash script. I think it's OK: we still have the
efficient lua scripts that do the short scripts, and we use a single shared
implementation in bash to do the more complex stuff.

The meson version is raised to 0.47 because that's needed for install_mode.
We were planning to raise the required version anyway…

3 years agotest: make sure we don't access an unbound variable
Frantisek Sumsal [Fri, 23 Jul 2021 10:53:31 +0000 (12:53 +0200)] 
test: make sure we don't access an unbound variable

```
testsuite-60.sh[759]: + grep -q '(mount-monitor-dispatch) entered rate limit'
testsuite-60.sh[571]: + sleep 5
testsuite-60.sh[761]: ++ date -u +%s
testsuite-60.sh[571]: + [[ 1627037066 -le 1627037061 ]]
testsuite-60.sh[571]: /usr/lib/systemd/tests/testdata/units/testsuite-60.sh: line 41: entered_rl: unbound variable
```

3 years agoMerge pull request #20288 from keszybz/freeze-no-malloc
Luca Boccassi [Fri, 23 Jul 2021 14:35:34 +0000 (15:35 +0100)] 
Merge pull request #20288 from keszybz/freeze-no-malloc

Don't call malloc from freeze which is called in a signal handler

3 years agoTODO: homed + user session namespace
Luca Boccassi [Fri, 23 Jul 2021 13:57:04 +0000 (14:57 +0100)] 
TODO: homed + user session namespace

3 years agoman: Fix incorrect EFI vendor UUID (last missing nibble)
ratijas [Fri, 23 Jul 2021 10:32:52 +0000 (13:32 +0300)] 
man: Fix incorrect EFI vendor UUID (last missing nibble)

3 years agodiscover-image: mount as read-only when extracting metadata
Luca Boccassi [Thu, 22 Jul 2021 21:21:10 +0000 (22:21 +0100)] 
discover-image: mount as read-only when extracting metadata

We don't need to modify the image, and the loopback device is already set to read-only.

3 years agomalloc() uses getrandom now
Cristian Rodríguez [Fri, 9 Jul 2021 21:19:05 +0000 (17:19 -0400)] 
malloc() uses getrandom now

glibc master uses getrandom in malloc since https://sourceware.org/git/?p=glibc.git;a=commit;h=fc859c304898a5ec72e0ba5269ed136ed0ea10e1  ,  getrandom should be in the default set so to avoid all non trivial programs to fallback to a PRNG.

3 years agologind: action* parameters can't be NULL in verify_shutdown_creds()
Franck Bui [Fri, 23 Jul 2021 05:27:19 +0000 (07:27 +0200)] 
logind: action* parameters can't be NULL in verify_shutdown_creds()

"action", "action_multiple_sessions" and "action_ignore_inhibit" can't be NULL
in practice so let's simplify a bit the code.

No functional change.

3 years agoSensor Y Axis is inverted for TrekStor Surftab W1
chlorophyll-zz [Fri, 23 Jul 2021 08:19:40 +0000 (10:19 +0200)] 
Sensor Y Axis is inverted for TrekStor Surftab W1

IIO Sensor Y Axis is inverted for TrekStor Surftab W1.
When iio-sensor-proxy is running, up is down and down is up.
This fixes the inversion.

3 years agoAdd variant of close_all_fds() that does not allocate and use it in freeze() 20288/head
Zbigniew Jędrzejewski-Szmek [Fri, 23 Jul 2021 09:36:44 +0000 (11:36 +0200)] 
Add variant of close_all_fds() that does not allocate and use it in freeze()

Even though it's just a fallback path, let's not be sloppy and allocate in
the crash handler.

> The deadlock happens because systemd crash in malloc() then in signal
> handler, it calls malloc() (close_all_fds()-> opendir()-> __alloc_dir())
> again. malloc() is not a signal-safe function, maybe we should re-think
> the logic here.

Fixes #20266.

3 years agoMove freeze() into shared/
Zbigniew Jędrzejewski-Szmek [Fri, 23 Jul 2021 09:34:00 +0000 (11:34 +0200)] 
Move freeze() into shared/

Library code should not call freeze(), this is something that should
only be done by "application code", so moving it into shared/ is appropriate.

The fallback to call _exit() is dropped: let's trust that the infinite loop
is infinite.

3 years agoMove fork_agent() into shared/
Zbigniew Jędrzejewski-Szmek [Fri, 23 Jul 2021 09:20:39 +0000 (11:20 +0200)] 
Move fork_agent() into shared/

Currently it's only used in two places in src/shared/, so the function was
already included just once in compiled code. But it seems appropriate to
move it there anyway, because library code should have no need to fork
agents, so it doesn't belong in basic/.

3 years agobasic/process-util: use xsprintf() in one more place
Zbigniew Jędrzejewski-Szmek [Fri, 23 Jul 2021 09:06:26 +0000 (11:06 +0200)] 
basic/process-util: use xsprintf() in one more place

3 years agoMake oom_score_adjust_is_valid() static
Zbigniew Jędrzejewski-Szmek [Fri, 23 Jul 2021 09:06:13 +0000 (11:06 +0200)] 
Make oom_score_adjust_is_valid() static

It has only one user and we don't need to put it in basic/.

3 years agobasic/fd-util: sort the 'except' array in place
Zbigniew Jędrzejewski-Szmek [Fri, 23 Jul 2021 08:51:14 +0000 (10:51 +0200)] 
basic/fd-util: sort the 'except' array in place

We need a sorted list of fds to skip over when closing. We would allocate a
copy of the passed array to do the sort. But all callers construct a temporary
array to pass to us, so it is pointless to copy it again.

close_all_fds/safe_fork_full/namespace_fork/fork_agent are changed to pass
a non-const int array. I checked all users, and all callers are fine with
the array being sorted.

The function was returning some number (sometimes 1, sometimes the extent
of the range passed over to close_range(), ???). Anyway, all callers only
check for error, so let's return 0 on success.

3 years agoMerge pull request #20103 from flokli/nsswitch-nss-myhostname
Zbigniew Jędrzejewski-Szmek [Fri, 23 Jul 2021 07:44:26 +0000 (09:44 +0200)] 
Merge pull request #20103 from flokli/nsswitch-nss-myhostname

man: stop recommending putting myhostname after dns

3 years agoman: document nss-{resolve,myhostname} resolving in the other direction, too 20103/head
Florian Klink [Sat, 17 Jul 2021 17:49:42 +0000 (19:49 +0200)] 
man: document nss-{resolve,myhostname} resolving in the other direction, too

3 years agoman: stop recommending putting myhostname after dns
Florian Klink [Thu, 1 Jul 2021 20:11:27 +0000 (22:11 +0200)] 
man: stop recommending putting myhostname after dns

nss-resolve also looks in /etc/hosts, and has the same local hostname
resolving logic as nss-myhostname. We shouldn't recommend another order
than nss-resolve uses internally.

When nss-resolve is used, there's no possibility to override
nss-myhostname hosts via DNS *anyway*.

On top of that, it's not a good idea to allow DNS to override local
hostnames as all - at least not something we should advertise in the
docs.

Followup of f918c67d38ba6ccd4eb0dc657f3f3155e5010cae /
https://github.com/systemd/systemd/pull/16754.

3 years agoTypo correction on systemd.unit man page
hikigaya58 [Thu, 22 Jul 2021 15:41:48 +0000 (23:41 +0800)] 
Typo correction on systemd.unit man page