Lennart Poettering [Tue, 23 Jun 2020 15:06:42 +0000 (17:06 +0200)]
man: s/PROGRAMM/PROGRAM/
(cherry picked from commit
92d64d144457d460992732f0540f28e1a7685124)
Dave Reisner [Thu, 11 Jun 2020 14:34:13 +0000 (10:34 -0400)]
Revert "job: Don't mark as redundant if deps are relevant"
This reverts commit
097537f07a2fab3cb73aef7bc59f2a66aa93f533.
At least Fedora and Debian have already reverted this at the distro
level because it causes more problems than it solves. Arch is debating
reverting it as well [0] but would strongly prefer that this happens
upstream first. Fixes #15188.
[0] https://bugs.archlinux.org/task/66458
(cherry picked from commit
cc479760b4736082d26ec332f2423a9ab23d59c5)
наб [Thu, 18 Jun 2020 23:55:09 +0000 (01:55 +0200)]
man/sd-makefs: link to btrfs.wiki. for btrfs-man5, since the man-pages link is dead
This also adds a <citerefentry project="url"> type,
since the other btrfs manpages use man-pages/die-net and are alive,
and btrfs.w.k.o won't be used anywhere else
(cherry picked from commit
affa893da0715cbb7a865f6363b6092097d5e161)
наб [Thu, 18 Jun 2020 23:15:20 +0000 (01:15 +0200)]
man/sd-makefs: also mention /sbin/mkswap
(cherry picked from commit
c2ad8c0978159cacffb3f10743989661ae440566)
Elisei Roca [Tue, 23 Jun 2020 05:42:15 +0000 (07:42 +0200)]
test-functions: read /usr/etc/nsswitch.conf if /etc/nsswitch.conf does not exist (#16195)
See this for more info why and since when this change is needed: https://build.opensuse.org/request/show/807179.
(cherry picked from commit
9e1732924d5b69647e8020c98796748d9b0ad926)
Zbigniew Jędrzejewski-Szmek [Mon, 22 Jun 2020 15:09:49 +0000 (17:09 +0200)]
bus-message: avoid dereferencing a NULL pointer
We'd try to map a zero-byte buffer from a NULL pointer, which is undefined behaviour.
src/systemd/src/libsystemd/sd-bus/bus-message.c:3161:60: runtime error: applying zero offset to null pointer
#0 0x7f6ff064e691 in find_part /work/build/../../src/systemd/src/libsystemd/sd-bus/bus-message.c:3161:60
#1 0x7f6ff0640788 in message_peek_body /work/build/../../src/systemd/src/libsystemd/sd-bus/bus-message.c:3283:16
#2 0x7f6ff064e8db in enter_struct_or_dict_entry /work/build/../../src/systemd/src/libsystemd/sd-bus/bus-message.c:3967:21
#3 0x7f6ff06444ac in bus_message_enter_struct /work/build/../../src/systemd/src/libsystemd/sd-bus/bus-message.c:4009:13
#4 0x7f6ff0641dde in sd_bus_message_enter_container /work/build/../../src/systemd/src/libsystemd/sd-bus/bus-message.c:4136:21
#5 0x7f6ff0619874 in sd_bus_message_dump /work/build/../../src/systemd/src/libsystemd/sd-bus/bus-dump.c:178:29
#6 0x4293d9 in LLVMFuzzerTestOneInput /work/build/../../src/systemd/src/fuzz/fuzz-bus-message.c:39:9
#7 0x441986 in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) /src/libfuzzer/FuzzerLoop.cpp:558:15
#8 0x44121e in fuzzer::Fuzzer::RunOne(unsigned char const*, unsigned long, bool, fuzzer::InputInfo*, bool*) /src/libfuzzer/FuzzerLoop.cpp:470:3
#9 0x443164 in fuzzer::Fuzzer::ReadAndExecuteSeedCorpora(std::__1::vector<fuzzer::SizedFile, fuzzer::fuzzer_allocator<fuzzer::SizedFile> >&) /src/libfuzzer/FuzzerLoop.cpp:770:7
#10 0x4434bc in fuzzer::Fuzzer::Loop(std::__1::vector<fuzzer::SizedFile, fuzzer::fuzzer_allocator<fuzzer::SizedFile> >&) /src/libfuzzer/FuzzerLoop.cpp:799:3
#11 0x42d2bc in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) /src/libfuzzer/FuzzerDriver.cpp:846:6
#12 0x42978a in main /src/libfuzzer/FuzzerMain.cpp:19:10
#13 0x7f6fef13c82f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)
#14 0x407808 in _start (out/fuzz-bus-message+0x407808)
(cherry picked from commit
b17af3e503a5861ae1437254a8a2a3600e768cc4)
Mark Pearson [Tue, 9 Jun 2020 13:27:58 +0000 (09:27 -0400)]
Added rules for Wacom Pen and EMV Smartcard Reader
(cherry picked from commit
7cb375e69179e80da261234abb5b53663a17eb9b)
[zjs: This is from https://github.com/systemd/systemd/pull/16113. For v246
a much complicated fix was merged. Let's use this simple one in the stable
branch.]
Lennart Poettering [Tue, 16 Jun 2020 12:38:44 +0000 (14:38 +0200)]
repart: if now minimal size is specified, default to 10M
Prompted by this discussion:
https://lists.freedesktop.org/archives/systemd-devel/2020-June/044669.html
(cherry picked from commit
fb08381c14b49d9878b838f15b0aeb1e16b59d98)
Yu Watanabe [Thu, 18 Jun 2020 04:48:45 +0000 (13:48 +0900)]
udev: udev_event_apply_format() always make buf NUL terminated
The return value of udev_event_apply_format() is always ignored.
So, the destination buffer must be always NUL terminated.
(cherry picked from commit
5eb6ef8b452ef15788cc0c7d176be38a2cef8ca2)
Yu Watanabe [Thu, 18 Jun 2020 04:48:44 +0000 (13:48 +0900)]
udev: fix error handling of sd_device_get_parent()
sd_device_get_parent() returns -EINVAL or -ENOENT on error, not -ENODEV.
Fixes #16207.
(cherry picked from commit
bc568a7a35f04cb052eadcd068e14fe60f6a5c0d)
Luca Boccassi [Mon, 15 Jun 2020 18:50:56 +0000 (19:50 +0100)]
efi: use stub for cache_efi_options_variable if !ENABLE_EFI
../src/core/main.c: In function 'main':
../src/core/main.c:2637:32: error: implicit declaration of function 'cache_efi_options_variable'; did you mean 'systemd_efi_options_variable'? [-Werror=implicit-function-declaration]
(void) cache_efi_options_variable();
^~~~~~~~~~~~~~~~~~~~~~~~~~
systemd_efi_options_variable
(cherry picked from commit
8d2d64166e1bb5978b5392b2787d1dd8feb63c16)
Filipe Brandenburger [Thu, 11 Jun 2020 22:33:32 +0000 (15:33 -0700)]
efi: Skip parsing SystemdOptions if there's an error getting it.
The original logic was logging an "ignored" debug message, but it was still
going ahead and calling proc_cmdline_parse_given() on the NULL line. Fix that
to skip that explicitly when the EFI variable wasn't really read.
(cherry picked from commit
7283fbfd0c46819fea9f0a20671eaef99b3993e5)
Daan De Meyer [Sat, 13 Jun 2020 12:48:40 +0000 (14:48 +0200)]
resolved: Log the feature level we're downgrading from as well
(cherry picked from commit
4f571b4061f32a0d45371453470f55e858ee8c57)
Daan De Meyer [Fri, 12 Jun 2020 18:17:15 +0000 (20:17 +0200)]
resolved: Don't complain too much when downgrading from EDNS
(cherry picked from commit
e034886b8022e871300e69418171bda00f937220)
Tomáš Pospíšek [Sun, 14 Jun 2020 08:43:06 +0000 (10:43 +0200)]
Improve message for scheduled shutdown or reboot
Depending on if the system has been scheduled for shutdown or for reboot pring the corresponding message (and not only "Shutdown"). Prtinting the "wrong" message when rebooting will mislead and panic people. I get these messages via cron from remote servers and it would be bad if those systems actually *did* shut down, as the email from cron is telling me. Those messages cause an adrenalin spike in our team, which wouldn't happen, if the message was "correct"
Fixes #16129.
(cherry picked from commit
6df8a6c753ed3b91464dd60d10fe4d291257870c)
Jan Palus [Thu, 11 Jun 2020 16:23:28 +0000 (18:23 +0200)]
login: filenames in /run/systemd/users are uids
Fixes: #16146
(cherry picked from commit
ac4e03d45bcf4ad2e570cabdb218e9bac003cc80)
Lennart Poettering [Wed, 10 Jun 2020 14:54:10 +0000 (16:54 +0200)]
sleep: pass error we see to log function
(cherry picked from commit
2c4702057b4a36923fcbd4db264223bd80850adc)
Lennart Poettering [Wed, 10 Jun 2020 14:53:24 +0000 (16:53 +0200)]
sleep-config: modernize destructors
All other destructors in the same .c file return NULL, let's make sure
the one where this so far wasn't done does it too.
(cherry picked from commit
1326de01588a765e96ed5b187566d10655aacc01)
Lennart Poettering [Wed, 10 Jun 2020 14:52:08 +0000 (16:52 +0200)]
sleep-config: downgrade log level in can_s2h()
As in the previous commit: can_sleep() is more a library-style function,
hence log at debug level only.
(cherry picked from commit
c732e8797987057671b9c2b23a38ce768080f039)
Lennart Poettering [Wed, 10 Jun 2020 14:47:38 +0000 (16:47 +0200)]
sleep: clean up debug/error logging
half of find_hibernation_location() logged at debug level, the other
half logged at error level, and the third half didn't log at all.
Let's clean this up somewhat. Since can_sleep() is probably more
a library-style function let's downgrade everything to LOG_DEBUG and
then make sure sleep.c logs at error level, as the main program.
(cherry picked from commit
c02540dc9e1f28c8598ff1ead0d0f0ed93774313)
Lennart Poettering [Wed, 10 Jun 2020 14:40:52 +0000 (16:40 +0200)]
sleep-config: return correct error code
(cherry picked from commit
6f9120ad6181fcd7316f5963557cd8d84a5979c8)
Lennart Poettering [Wed, 10 Jun 2020 14:40:36 +0000 (16:40 +0200)]
sleep-config: add more debug logging
(cherry picked from commit
c0d8fbfa343eadecd4f44801710d1302c40a0f10)
Anita Zhang [Wed, 10 Jun 2020 08:18:00 +0000 (01:18 -0700)]
core: don't consider SERVICE_SKIP_CONDITION for abnormal or failure restarts
Fixes: #16115
(cherry picked from commit
bb9244781c6fc7608f7cac910269f8987b8adc01)
Lennart Poettering [Tue, 9 Jun 2020 06:59:33 +0000 (08:59 +0200)]
pager: set PR_DEATHSIG for pager to SIGINT rather than SIGTERM
"less" doesn't properly reset its terminal on SIGTERM, it does so only
on SIGINT. Let's thus configure SIGINT instead of SIGTERM.
I think this is something less should fix too, and clean up things
correctly on SIGTERM, too. However, given that we explicitly enable
SIGINT behaviour by passing "K" to $LESS I figure it makes sense if we
also send SIGINT instead of SIGTERM to match it.
Fixes: #16084
(cherry picked from commit
97033ba455c4c1e359835879eee2e3c690395792)
Luca Boccassi [Wed, 3 Jun 2020 18:47:39 +0000 (19:47 +0100)]
dissect-image: wait for udev for single filesystem images too
Single filesystem images are mounted from the /dev/block/X:Y symlink
rather than /dev/loopZ, so we need to wait for udev to create it or
mounting will be racy and occasionally fail.
(cherry picked from commit
b1806441bbf72fb227f41767ceaf2d6330701f51)
Yigal Korman [Sun, 7 Jun 2020 18:46:59 +0000 (21:46 +0300)]
man: udevadm: mention non-zero exit code on settle
'udevadm settle --timeout=XY' will return 1 in case the timeout was
reached and the event queue was not empty.
The manpage should mention it.
(cherry picked from commit
2233c2703c91325f8c742daf2d37c1343f35998e)
Chris Down [Tue, 9 Jun 2020 13:43:05 +0000 (14:43 +0100)]
doc: Try to clarify automount dependency confusion
Arch recently upgraded systemd to 245.6. Shortly afterwards, users began
reporting[0] that systemd detected an ordering cycle, and they were
unable to log in. The reason they were unable to log in was because of
ordering cycle resolution:
[...]
systemd[1]: sysinit.target: Job systemd-tmpfiles-setup.service/start deleted to break ordering cycle starting with sysinit.target/start
systemd[1]: sysinit.target: Job systemd-update-done.service/start deleted to break ordering cycle starting with sysinit.target/start
systemd[1]: sysinit.target: Job systemd-journal-catalog-update.service/start deleted to break ordering cycle starting with sysinit.target/start
systemd[1]: sysinit.target: Job local-fs.target/start deleted to break ordering cycle starting with sysinit.target/start
systemd[1]: sysinit.target: Job systemd-tmpfiles-setup.service/start deleted to break ordering cycle starting with sysinit.target/start
[...]
Whether the resolution did the right thing here or not is a longer-term
discussion, but in the interim we should at least make this distinction
between automount dependencies and mount dependencies clearer in the
documentation, so that users and distribution maintainers know what's
acceptable. In this case Arch actually backed out
b3d7aef5 entirely and
released a new version due to the confusion.
Also see https://github.com/systemd/systemd-stable/issues/69.
0: https://bugs.archlinux.org/task/66908
(cherry picked from commit
69876f94abc3f5861e87ad287b8d1f6770c6fdce)
Zbigniew Jędrzejewski-Szmek [Fri, 5 Jun 2020 14:30:22 +0000 (16:30 +0200)]
shell-completion: add homectl for bash
The difference between verbs that take one user and multiple users is not
handled. I don't know how to do this.
(cherry picked from commit
3a9692dd05cff1bd1679aa2c10fb00ce12ef0662)
Zbigniew Jędrzejewski-Szmek [Thu, 4 Jun 2020 11:17:22 +0000 (13:17 +0200)]
kernel-install: extend --help
(cherry picked from commit
3ac33bc96672f8669b2daddee2b6574010776fbe)
Lennart Poettering [Fri, 5 Jun 2020 13:42:45 +0000 (15:42 +0200)]
man: single-char parameters take no '='
The suggested syntax is simply not valid and results in an error.
(cherry picked from commit
a34a2933e9f1bf71fe4abdc7b924128790f228c0)
layderv [Sat, 6 Jun 2020 16:01:56 +0000 (12:01 -0400)]
homed help --uid short option
(cherry picked from commit
a07e962549bc900365627482834896ea98996ff4)
Lennart Poettering [Fri, 5 Jun 2020 13:56:11 +0000 (15:56 +0200)]
test: add test for parse_uid_range()
(cherry picked from commit
42e57a4eb2b0e97a83d5ef5635ba4d4e1d75e216)
Lennart Poettering [Mon, 1 Jun 2020 15:48:41 +0000 (17:48 +0200)]
tests: beef up integer parsing tests
(cherry picked from commit
53c6db99fa4b52f97e19977f21d3133f8ceb3dcd)
Lennart Poettering [Mon, 1 Jun 2020 15:31:51 +0000 (17:31 +0200)]
parse-util: also parse integers prefixed with 0b and 0o
Let's adopt Python 3 style 0b and 0x syntaxes, because it makes a ton of
sense, in particular in bitmask settings.
(cherry picked from commit
fc80cabcf584a8b486bdff5be0c074fec4059cdc)
Lennart Poettering [Mon, 1 Jun 2020 15:17:40 +0000 (17:17 +0200)]
parse-util: rewrite parse_uid_range() on top of parse_uid()
parse_uid() does so many safety checks we want, hence rewrite
parse_uid_range() on top of parse_uid() instead of parse_range().
(cherry picked from commit
60eb1f0728f215be85f0a65c1dca72a352833608)
Lennart Poettering [Mon, 1 Jun 2020 15:16:46 +0000 (17:16 +0200)]
user-util: be stricter in parse_uid()
Let's refuse "+" and "-" prefixed UIDs. Let's refuse whitespace-prefixed
UIDS, Let's refuse zero-prefixed UIDs. Let's be safe than sorry.
(cherry picked from commit
f5979b63cc305ba217dfd174b1bf0583bcf75a73)
Lennart Poettering [Mon, 1 Jun 2020 15:16:04 +0000 (17:16 +0200)]
parse-util: rewrite parse_mode() on top of safe_atou_full()
Parsing is hard, hence let's use our own careful wrappers wherever
possible.
(cherry picked from commit
c44702a8bd8cc8b7f2f1df21db9308d9af7dda5b)
Lennart Poettering [Mon, 1 Jun 2020 15:10:27 +0000 (17:10 +0200)]
parse-util: make return parameter optional in safe_atou16_full()
All other safe_atoXYZ_full() functions have the parameter optional,
let's make it optoinal here, too.
(cherry picked from commit
aa85e4d3cef8ca8436e480bce9fa4ce72876b636)
Lennart Poettering [Mon, 1 Jun 2020 15:08:38 +0000 (17:08 +0200)]
parse-util: allow '-0' as alternative to '0' and '+0'
Let's allow "-0" as alternative to "+0" and "0" when parsing integers,
unless the new SAFE_ATO_REFUSE_PLUS_MINUS flag is specified.
In cases where allowing the +/- syntax shall not be allowed
SAFE_ATO_REFUSE_PLUS_MINUS is the right flag to use, but this also means
that -0 as only negative integer that fits into an unsigned value should
be acceptable if the flag is not specified.
(cherry picked from commit
c78eefc13562a8fc0c22c00a6d3001af89860258)
Lennart Poettering [Mon, 1 Jun 2020 15:06:19 +0000 (17:06 +0200)]
parse-util: allow tweaking how to parse integers
This allows disabling a few alternative ways to decode integers
formatted as strings, for safety reasons.
See: #15991
(cherry picked from commit
707e93aff8f358f8a62117e54b857530d6594e4b)
Zbigniew Jędrzejewski-Szmek [Thu, 9 Apr 2020 09:18:26 +0000 (11:18 +0200)]
basic/parse-util: add safe_atoux64()
(cherry picked from commit
ce51632a357d347737bf40d3817df331cd8874cb)
Filipe Brandenburger [Wed, 10 Jun 2020 22:11:32 +0000 (15:11 -0700)]
efi: Cache contents of EFI variable SystemdOptions
Cache it early in startup of the system manager, right after `/run/systemd` is
created, so that further access to it can be done without accessing the EFI
filesystem at all.
(cherry picked from commit
209b2592ed5883bdfc7a0f2e5b7277c5c4fe834e)
Zbigniew Jędrzejewski-Szmek [Sun, 31 May 2020 10:16:57 +0000 (12:16 +0200)]
basic/efivars: try re-reading efivars without delay first
Quoting https://github.com/systemd/systemd/issues/14828#issuecomment-
635212615:
> [kernel uses] msleep_interruptible() and that means when the process receives
> any kind of signal masked or not this will abort with EINTR. systemd-logind
> gets signals from the TTY layer all the time though.
> Here's what might be happening: while logind reads the EFI stuff it gets a
> series of signals from the TTY layer, which causes the read() to be aborted
> with EINTR, which means logind will wait 50ms and retry. Which will be
> aborted again, and so on, until quite some time passed. If we'd not wait for
> the 50ms otoh we wouldn't wait so long, as then on each signal we'd
> immediately retry again.
(cherry picked from commit
eee9b30af41d2b3a265ad303234ac62bb46b7cd3)
Lennart Poettering [Wed, 27 May 2020 15:30:29 +0000 (17:30 +0200)]
efi: add more logging for all EFI variable reads
(cherry picked from commit
84190644ff4acea3cac3227f3dd85eddc3f8c673)
Lennart Poettering [Wed, 27 May 2020 15:22:46 +0000 (17:22 +0200)]
efi: explicitly update mtime of EFI variables when changing them
(cherry picked from commit
d197c403b2b71b6ab9b8cc9f3a171064b615018c)
Lennart Poettering [Wed, 27 May 2020 14:22:07 +0000 (16:22 +0200)]
efi: as extra paranoia NUL terminate UTF-16 strings with three NUL bytes
This is a safey net anyway, let's make it fully safe: if the data ends
on an uneven byte, then we need to complete the UTF-16 codepoint first,
before adding the final NUL byte pair. Hence let's suffix with three
NULs, instead of just two.
(cherry picked from commit
c75e7da0b53dd67363b724502e91901e89097886)
Lennart Poettering [Mon, 25 May 2020 15:13:57 +0000 (17:13 +0200)]
efivars: log whenever an EFI variable read access is slow
This should allow us to detect slowdowns caused by EFI variable read
access a bit.
(cherry picked from commit
698564d147ce09c0fedc9de10fe8e0850b729677)
Zbigniew Jędrzejewski-Szmek [Wed, 20 May 2020 16:08:05 +0000 (18:08 +0200)]
basic/efivars: fix errno propagation
Fixup for
484f4e5b2d62e885998fa3c09ed4d58b6c38f987. Should fix #15730.
(cherry picked from commit
a0fa2683373a3fd69d628f62240c8faca25b0361)
Lennart Poettering [Thu, 30 Apr 2020 08:08:54 +0000 (10:08 +0200)]
efi: honour SYSTEMD_EFI_OPTIONS even if we wouldn't honour SystemdOptions EFI var due to SecureBoot
Fixes: #14864
(cherry picked from commit
484f4e5b2d62e885998fa3c09ed4d58b6c38f987)
Zbigniew Jędrzejewski-Szmek [Fri, 24 Apr 2020 08:53:46 +0000 (10:53 +0200)]
efivars: retry open and read operations
On my laptop (Lenovo X1carbo 4th) I very occasionally see test-boot-timestamps
fail with this tb:
262/494 test-boot-timestamps FAIL 0.
7348453998565674 s (killed by signal 6 SIGABRT)
08:12:48 SYSTEMD_LANGUAGE_FALLBACK_MAP='/home/zbyszek/src/systemd/src/locale/language-fallback-map' SYSTEMD_KBD_MODEL_MAP='/home/zbyszek/src/systemd/src/locale/kbd-model-map' PATH='/home/zbyszek/src/systemd/build:/home/zbyszek/.local/bin:/usr/lib64/qt-3.3/bin:/usr/share/Modules/bin:/usr/condabin:/usr/lib64/ccache:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/home/zbyszek/bin:/var/lib/snapd/snap/bin' /home/zbyszek/src/systemd/build/test-boot-timestamps
--- stderr ---
Failed to read $container of PID 1, ignoring: Permission denied
Found container virtualization none.
Failed to get SystemdOptions EFI variable, ignoring: Interrupted system call
Failed to read ACPI FPDT: Permission denied
Failed to read LoaderTimeInitUSec: Interrupted system call
Failed to read EFI loader data: Interrupted system call
Assertion 'q >= 0' failed at src/test/test-boot-timestamps.c:84, function main(). Aborting.
Normally it takes ~0.02s, but here there's a slowdown to 0.73 and things fail with EINTR.
This happens only occasionally, and I haven't been able to capture a strace.
It would be to ignore that case in test-boot-timestamps or always translate
EINTR to -ENODATA. Nevertheless, I think it's better to retry, since this gives
as more resilient behaviour and avoids a transient failure.
See
https://github.com/torvalds/linux/blob/master/fs/efivarfs/file.c#L75
and
https://github.com/torvalds/linux/commit/
bef3efbeb897b56867e271cdbc5f8adaacaeb9cd.
(cherry picked from commit
7229ec02ab3a7f498b93158b500e697838ccdd9b)
YmrDtnJu [Fri, 5 Jun 2020 13:36:58 +0000 (15:36 +0200)]
resolve: enable RES_TRUSTAD towards the 127.0.0.53 stub resolver
glibc 2.31 strips the AD flag, unless either the application specifies
RES_TRUSTAD or the options in resolv.conf contain trust-ad.
See https://sourceware.org/git/?p=glibc.git;a=blob_plain;f=NEWS;hb=HEAD
(cherry picked from commit
a742f9828ea73d9c2c9bafe701c10fe60f058012)
Thomas Haller [Fri, 5 Jun 2020 17:48:13 +0000 (19:48 +0200)]
lldp: fix assertion checking argument for sd_lldp_set_neighbors_max()
Fixes:
34437b4f9c9c ('sd-lldp: rework sd-lldp API')
(cherry picked from commit
9141594cae1dfd2a17057d3d1effbd2164b1c235)
Yu Watanabe [Wed, 3 Jun 2020 08:07:16 +0000 (17:07 +0900)]
network: make link become configured state when at least one dynamic protocol provide an address
Before this, to speed up the system boot with IPv4 only network,
we need to specify `IPv6AcceptRA=no`, as it is enabled by default.
Closes #15469.
(cherry picked from commit
3cd5924c850929b03bc8d4ba5db614d662edb49a)
Einsler Lee [Thu, 4 Jun 2020 07:28:51 +0000 (15:28 +0800)]
change fs/file-max to LONG_MAX instead of ULONG_MAX
Since this has been changed in: https://github.com/systemd/systemd/commit/
6e2f78948403a4cce45b9e34311c9577c624f066, the change should be synchronized.
(cherry picked from commit
168561f2eb01bd76ff4b8d5b69e76dfb0a6edba9)
Zbigniew Jędrzejewski-Szmek [Tue, 2 Jun 2020 12:26:26 +0000 (14:26 +0200)]
man: add note that emergency.target inherits mount state
Based on an internal discussion whether emergency.target should remount disks
ro, or maybe remount them rw, or do nothing. In some cases people want to boot
ro, and always remounting rw would break that. In other cases, remounting disks
ro after they have already been mounted rw is mostly pointless and might even
not be possible. So let's just document that we don't change the state.
Also: any→other, since emergency.service *is* pulled in.
Also: just advertise "emergency" as the way to boot into the target.
We are not going to remove this option, and it's way easier to type than
"systemd.unit=emergency.target".
(cherry picked from commit
927b9b8f63c2c8b1e56ffd127bf5366c02b2aa0f)
Yu Watanabe [Wed, 3 Jun 2020 07:19:29 +0000 (16:19 +0900)]
network: read driver name from ethtool
To make Driver= in [Match] section work in containers.
Note that ID_NET_DRIVER= property in udev database is set with the
result of the ethtool. So, this should not change anything for
non-container cases.
Closes #15678.
(cherry picked from commit
c643bda5ec3afe57c071d96b517cf20ec9f3423e)
Lennart Poettering [Tue, 2 Jun 2020 14:49:50 +0000 (16:49 +0200)]
conf-parse: fix pretty bad typo
(cherry picked from commit
5aca2e6733d35534f82359e5720b3dea1d1332e5)
Zbigniew Jędrzejewski-Szmek [Sun, 31 May 2020 12:35:40 +0000 (14:35 +0200)]
core: set source_mtime after load dropins
Dropins may specify SourcePath= too, but we would do the stat only
after loading the main fragment, before loading of the drop-ins.
Fixes #13634.
(cherry picked from commit
c9e06956754036177442e0e225f8c63b1f7eac5f)
Yu Watanabe [Mon, 1 Jun 2020 04:01:09 +0000 (13:01 +0900)]
network: use uint32_t instead of unsigned for route priority
(cherry picked from commit
132be2b8685883da4ffe756f4be69db0281c7483)
Lennart Poettering [Tue, 2 Jun 2020 08:39:25 +0000 (10:39 +0200)]
fd-util: be more careful with fclose() errnos
This might fix #15859, a bug which I find very puzzling.
(cherry picked from commit
75f6d5d87e950f62baced48fe9b58828969e3811)
Yu Watanabe [Mon, 1 Jun 2020 05:53:06 +0000 (14:53 +0900)]
network: also read mtime of drop-in configs
Fixes #15521.
(cherry picked from commit
9f83091e3cceb646a66fa9df89de6d9a77c21d86)
Yu Watanabe [Mon, 1 Jun 2020 07:19:50 +0000 (16:19 +0900)]
network: do not propagte error on stat()
(cherry picked from commit
c4473dec34cd49db0a49b24dfe418ad2aa239328)
Yu Watanabe [Fri, 29 May 2020 07:56:09 +0000 (16:56 +0900)]
network: fix double free in macsec_receive_channel_free()
Fixes #15941.
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=22547
(cherry picked from commit
0e77fc66bceb9832da82a56a4c1040fe49f8d805)
Yu Watanabe [Mon, 1 Jun 2020 05:22:06 +0000 (14:22 +0900)]
network: wireguard: set ListenPort= when no peers are configured
Closes #15786.
(cherry picked from commit
50254f55006b896639a14af1254536ce979a9810)
Zbigniew Jędrzejewski-Szmek [Sat, 30 May 2020 14:04:00 +0000 (16:04 +0200)]
shell-completions: update bootctl
Entries in the completion lists are reordered to follow --help output:
this makes it much easier to see what is missing.
(cherry picked from commit
8f0a346a290d6f7bddca32a080d36c0a64ed77f6)
[zjs: drop "reboot-to-firmware"]
Zbigniew Jędrzejewski-Szmek [Sun, 31 May 2020 16:21:09 +0000 (18:21 +0200)]
basic/user-util: always use base 10 for user/group numbers
We would parse numbers with base prefixes as user identifiers. For example,
"0x2b3bfa0" would be interpreted as UID==
45334432 and "01750" would be
interpreted as UID==1000. This parsing was used also in cases where either a
user/group name or number may be specified. This means that names like
0x2b3bfa0 would be ambiguous: they are a valid user name according to our
documented relaxed rules, but they would also be parsed as numeric uids.
This behaviour is definitely not expected by users, since tools generally only
accept decimal numbers (e.g. id, getent passwd), while other tools only accept
user names and thus will interpret such strings as user names without even
attempting to convert them to numbers (su, ssh). So let's follow suit and only
accept numbers in decimal notation. Effectively this means that we will reject
such strings as a username/uid/groupname/gid where strict mode is used, and try
to look up a user/group with such a name in relaxed mode.
Since the function changed is fairly low-level and fairly widely used, this
affects multiple tools: loginctl show-user/enable-linger/disable-linger foo',
the third argument in sysusers.d, fourth and fifth arguments in tmpfiles.d,
etc.
Fixes #15985.
(cherry picked from commit
156a5fd297b61bce31630d7a52c15614bf784843)
Yu Watanabe [Tue, 23 Jun 2020 07:10:25 +0000 (09:10 +0200)]
parse-util: backport safe_atou32_full()
We need this for a follow up security fix.
(cherry picked from commit
b934ac3d6e7dcad114776ef30ee9098693e7ab7e)
Lennart Poettering [Tue, 28 Apr 2020 21:33:46 +0000 (23:33 +0200)]
efi: cache test results of boolean EFI state functions
EFI variable access is nowadays subject to rate limiting by the kernel.
Thus, let's cache the results of checking them, in order to minimize how
often we access them.
Fixes: #14828
(cherry picked from commit
f46ba93944aac3f05211e0d630cdf84955eba2d8)
Lennart Poettering [Wed, 22 Apr 2020 17:48:48 +0000 (19:48 +0200)]
sd-journal: don't check namespaces if we have no namespace to go by
Fixes: #15528
(cherry picked from commit
2b6df46d21abe8a8b7481e420588a9a129699cf9)
Susant Sahani [Sat, 30 May 2020 04:35:28 +0000 (06:35 +0200)]
network: L2TP fix crash
```
=220358== Invalid read of size 8
==220358== at 0x452F05: l2tp_session_free (l2tp-tunnel.c:46)
==220358== by 0x456926: l2tp_tunnel_done (l2tp-tunnel.c:725)
==220358== by 0x43CF4D: netdev_free (netdev.c:205)
==220358== by 0x43D045: netdev_unref (netdev.c:210)
==220358== by 0x4198B7: manager_free (networkd-manager.c:1877)
==220358== by 0x40D0B3: manager_freep (networkd-manager.h:105)
==220358== by 0x40DE1C: run (networkd.c:21)
==220358== by 0x40DE75: main (networkd.c:130)
==220358== Address 0x5c035d0 is 0 bytes inside a block of size 40 free'd
==220358== at 0x483A9F5: free (vg_replace_malloc.c:538)
==220358== by 0x452F87: l2tp_session_free (l2tp-tunnel.c:57)
==220358== by 0x456857: netdev_l2tp_tunnel_verify (l2tp-tunnel.c:710)
==220358== by 0x440947: netdev_load_one (netdev.c:738)
==220358== by 0x441222: netdev_load (netdev.c:851)
==220358== by 0x419C50: manager_load_config (networkd-manager.c:1934)
==220358== by 0x40D7BE: run (networkd.c:87)
==220358== by 0x40DE75: main (networkd.c:130)
==220358== Block was alloc'd at
==220358== at 0x4839809: malloc (vg_replace_malloc.c:307)
==220358== by 0x452A76: malloc_multiply (alloc-util.h:96)
==220358== by 0x4531E6: l2tp_session_new_static (l2tp-tunnel.c:82)
==220358== by 0x455C01: config_parse_l2tp_session_id (l2tp-tunnel.c:535)
==220358== by 0x48E6D72: next_assignment (conf-parser.c:133)
==220358== by 0x48E77A3: parse_line (conf-parser.c:271)
==220358== by 0x48E7E4F: config_parse (conf-parser.c:396)
==220358== by 0x48E80E5: config_parse_many_files (conf-parser.c:453)
==220358== by 0x48E8490: config_parse_many (conf-parser.c:512)
==220358== by 0x44089C: netdev_load_one (netdev.c:729)
==220358== by 0x441222: netdev_load (netdev.c:851)
==220358== by 0x419C50: manager_load_config (networkd-manager.c:1934)
```
(cherry picked from commit
a1422af564e3b1128fc7754596b4c2f8b36a4620)
Michael Gubbels [Fri, 29 May 2020 23:40:39 +0000 (16:40 -0700)]
Lennart Poettering [Fri, 29 May 2020 15:46:40 +0000 (17:46 +0200)]
stat-util: trivial empty_or_null() tweaks
To small tweaks: /dev/null is definitely a char device. And if we have
the path, to a string base comparison first.
(cherry picked from commit
29da419305e6cc3c660172e7edcd2f423dc1108b)
sterlinghughes [Thu, 28 May 2020 20:54:27 +0000 (13:54 -0700)]
Check ambient set against bounding set prior to applying ambient set
Fixes #15020
(cherry picked from commit
8acb11a6a337601a6f307fb50d77b13ffa0b3c5e)
Lennart Poettering [Tue, 26 May 2020 16:58:15 +0000 (18:58 +0200)]
udev: when the BSD lock on a block device is taken, don't complain
if someone implements https://systemd.io/BLOCK_DEVICE_LOCKING/ then we
shouldn't loudly complain about that.
This reverts back to the original behaviour from
3ebdb81ef088afd3b4c72b516beb5610f8c93a0d: when the lock is taken we
silently skip processing the device and sending out the messages for it.
(cherry picked from commit
5abee64ed40039404d68414f0189245988635e6c)
Zbigniew Jędrzejewski-Szmek [Tue, 26 May 2020 14:07:30 +0000 (16:07 +0200)]
core: add forgotten return in error path
If we get an error here, this is most likely oom, and we should not continue.
(cherry picked from commit
1414090854829003c0d234042b218a3bd6f1cb0f)
Zbigniew Jędrzejewski-Szmek [Tue, 26 May 2020 19:08:10 +0000 (21:08 +0200)]
shared/efi-loader: remove check that uses absolute tick value
sd-boot uses rdtsc to set those timestamps. There is no guarantee that the tsc
has any particular absolute value.
On my VM:
$ head /sys/firmware/efi/efivars/LoaderTime*
==> /sys/firmware/efi/efivars/LoaderTimeExecUSec-
4a67b082-0a4c-41cf-b6c7-
440b29bb8c4f <==
4397904074
==> /sys/firmware/efi/efivars/LoaderTimeInitUSec-
4a67b082-0a4c-41cf-b6c7-
440b29bb8c4f <==
4396386839
==> /sys/firmware/efi/efivars/LoaderTimeMenuUSec-
4a67b082-0a4c-41cf-b6c7-
440b29bb8c4f <==
4396392521
$ build/test-boot-timestamps
...
LoaderTimeExecUSec=
4396386839 too large, refusing.
Failed to read EFI loader data: Input/output error
Assertion 'q >= 0' failed at src/test/test-boot-timestamps.c:84, function main(). Aborting.
(with patch)
$ build/test-boot-timestamps
...
EFI Loader: start=1h 13min 16.386s exit=1h 13min 17.904s duration=1.517s
Firmware began 1h 13min 17.904074s before kernel.
Loader began 1.517235s before kernel.
Firmware began Tue 2020-05-26 11:04:13 CEST.
Loader began Tue 2020-05-26 12:17:30 CEST.
Kernel began Tue 2020-05-26 12:17:31 CEST.
(cherry picked from commit
dde5c821bf33c085fcefb791bcb541510bb0e992)
Lennart Poettering [Tue, 26 May 2020 16:52:15 +0000 (18:52 +0200)]
gpt: include homed GPT partition type in well-known partition table
(cherry picked from commit
7b11770bae0653eb7c9c81f90ebc7324c25bf697)
Lennart Poettering [Tue, 26 May 2020 17:20:33 +0000 (19:20 +0200)]
units: don't set PrivateNetwork= in systemd-homed.service
We want to watch USB sticks being plugged in, and that requires
AF_NETLINK to work correctly and get the host's events. But if we live
in a network namespace AF_NETLINK is disconnected too and we'll not get
the host udev events.
Fixes: #15287
(cherry picked from commit
48432791accdcf775995781ddefd6027283f8a97)
Florian Klink [Sat, 23 Nov 2019 10:45:34 +0000 (11:45 +0100)]
resolved-dns-query: remove dns_query_candidate_is_routable
Resolved can't reliably determine on whether "it makes sense" to query
AAAA records when not explicitly specifying it in the request, so we
shouldn't remove them.
After having done the resolving, applications can use RFC6724 to
determine whether that address is reachable.
We can't know whether an address is reachable before having resolved it
and inspecting the routing table, and not resolving AAAA just because
there's no IPv6 default route on the main interface link them breaks
various setups, including IPv6-providing wireguard tunnels on a
non-dualstacked environment.
Fixes #5782
Fixes #5915
Fixes #8017
(cherry picked from commit
90bdc8be66765df09bbc355783cee7204a5ebb31)
Zbigniew Jędrzejewski-Szmek [Sun, 24 May 2020 17:06:12 +0000 (19:06 +0200)]
sd-network: fix inverted error message
We get -ENOMSG when there is no lease.
(cherry picked from commit
2206aa5c35a20f923b6b80294725085833b86ce3)
Zbigniew Jędrzejewski-Szmek [Thu, 21 May 2020 06:36:01 +0000 (08:36 +0200)]
network: allow empty assignment to PreferredLifetime=
Users might want to use that to unset a previous setting. The docs seem OK as
they are: we don't need to explictly mention the empty value, since it is
almost always allowed.
(cherry picked from commit
10b20e5a936e28de47b8c42fab8d73bce528fa8e)
codicodi [Thu, 21 May 2020 10:37:43 +0000 (12:37 +0200)]
Update resolvectl zsh completion
(cherry picked from commit
d0192e93f8fa80df7e7a09a7466066db6fce851b)
Jeremy Cline [Fri, 15 May 2020 20:28:35 +0000 (16:28 -0400)]
shared: treat generator units as vendor units
Units created with "systemctl edit --full" from generator units aren't
removed with "systemctl revert" because units in the generator,
generator_early, and generator_late paths aren't considered vendor
units.
Alter path_is_vendor() to return true if the given path is a
generator unit, which in turn causes "systemctl revert" to remove units
created with "systemctl edit --full" as they now have vendor versions.
Fixes #10053
(cherry picked from commit
efdbf5fe9c4222725899d0e1093a09c5d649ab68)
Zbigniew Jędrzejewski-Szmek [Wed, 20 May 2020 16:10:58 +0000 (18:10 +0200)]
tree-wide: fix bad errno checks
(cherry picked from commit
6b8664cb5b2577521e2d364153eb66649e558efb)
Zbigniew Jędrzejewski-Szmek [Wed, 20 May 2020 07:25:11 +0000 (09:25 +0200)]
bus-message: immediately reject messages with invalid type
For whatever reason, we were very permissive with accepting messages
of unknown type. Let's just reject any unknown types as early as
possible.
(cherry picked from commit
a2dd991d0fde59dc0574bd4d0c1438f01dc0b8ff)
Zbigniew Jędrzejewski-Szmek [Wed, 20 May 2020 07:05:17 +0000 (09:05 +0200)]
bus-message: fix negative offset with ~empty message
In the linked reproducer, m->fields_size == 0, and we calculate ri == -1, which
of course doesn't end well. Skip the whole calculation if m->fields_size == 0,
and also check that we don't go negative even if it is non-zero.
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19446 and #15583.
(cherry picked from commit
e0c17a7d1bdd197dfb5e24ba527bd281f404f1a9)
ExtinctFire [Wed, 20 May 2020 08:39:09 +0000 (16:39 +0800)]
load-fragment: fix a typo
Correct the typo of “priority” in log message
(cherry picked from commit
929fed02df3f6eda17c5e7d1f21c5490520d9b6a)
Zbigniew Jędrzejewski-Szmek [Tue, 19 May 2020 14:21:52 +0000 (16:21 +0200)]
NEWS: retroactively document Family=
Requested in https://github.com/systemd/systemd/issues/13233#issuecomment-
630800112.
(cherry picked from commit
70fcda8562b6a890e511fd39fa120a27471811bc)
Zbigniew Jędrzejewski-Szmek [Mon, 18 May 2020 19:14:42 +0000 (21:14 +0200)]
man: fix dir name in sysctl.d(5)
Pointed out by Коренберг Марк in
https://github.com/systemd/systemd/commit/
e0f424790d3dbde136a29a7fa4c2777c2e3fd695#commitcomment-
39259499.
(cherry picked from commit
7b9289b1a0f0fe0a836fddc18b96d963673fad85)
Lennart Poettering [Tue, 12 May 2020 21:36:27 +0000 (23:36 +0200)]
journalctl,elsewhere: make sure --file=foo fails with sane error msg if foo is not readable
It annoyed me for quite a while that running "journalctl --file=…" on a
file that is not readable failed with a "File not found" error instead
of a permission error. Let's fix that.
We make this work by using the GLOB_NOCHECK flag for glob() which means
that files are not accessible will be returned in the array as they are
instead of being filtered away. This then means that our later attemps
to open the files will fail cleanly with a good error message.
(cherry picked from commit
544e146b0e2f6227e28476e36becd1019b14ef70)
Lennart Poettering [Mon, 18 May 2020 16:30:18 +0000 (18:30 +0200)]
makefs: log about OOM condition
(cherry picked from commit
700e0d3d87705a6ba01793d7130bbb8e6edbee16)
Lennart Poettering [Mon, 18 May 2020 16:29:57 +0000 (18:29 +0200)]
blockdev: propagate one more unexpected error
(cherry picked from commit
6cba41ab0dbe5eb817f37bd43caff4754d801d3b)
Lennart Poettering [Tue, 19 May 2020 07:23:00 +0000 (09:23 +0200)]
repart: don't insist on coming up on partition label ourselves
If the user specified a label, use that.
Fixes: #15841
(cherry picked from commit
feb13fca97532b0a411a633fd601b93aa6f9275f)
Vladyslav Tronko [Thu, 14 May 2020 02:26:23 +0000 (05:26 +0300)]
journal: fix dropping first record during upload to remote journal
(cherry picked from commit
bc48b25afd2800b643424125b05b822293840c2e)
Dimitri John Ledkov [Fri, 15 May 2020 18:16:05 +0000 (19:16 +0100)]
meson: initialize time-epoch to reproducible builds compatible value
Debian Policy encourages to preserve timestamps whenever possible in the
tarballs, thus stable release updates of systemd usually do not bump NEWS file
timestamp. And thus time-epoch remains the same for the lifetime of a release.
It would be better, if each new stable release rebuild of systemd would bump
the time epoch a bit. But at the same time remain
reproducible. SOURCE_DATE_EPOCH is an environmnet variable defined for this
purpose. Thus if available, prefer that, instead of the NEWS file modification
time.
For example, on Debian/Ubuntu under the reproducible builds the
SOURCE_DATE_EPOCH is set to the timestamp from the packaging metadata, thus it
is incremented on every new stable release update, whilst preserving
reproducible builds capability.
Reference: https://reproducible-builds.org/docs/timestamps/
(cherry picked from commit
6dbf352cfbbaf9c9b277af54da50da38296ae5c6)
Lennart Poettering [Thu, 14 May 2020 17:11:18 +0000 (19:11 +0200)]
limit-util: quieten a very common debug message that is misleading
(cherry picked from commit
7cd9e4f8a087caa38acb5c7b0c41d38e82cf4d80)
Frantisek Sumsal [Fri, 15 May 2020 10:02:43 +0000 (12:02 +0200)]
shared: fix integer overflow in calendarspec
Fixes: oss-fuzz#22208
```
test/fuzz/fuzz-calendarspec/oss-fuzz-22208... ../src/shared/calendarspec.c:666:48: runtime error: signed integer overflow:
2147000000 +
1000000 cannot be represented in type 'int'
#0 0x7f0b9f6cc56a in prepend_component ../src/shared/calendarspec.c:666
#1 0x7f0b9f6cd03a in parse_chain ../src/shared/calendarspec.c:718
#2 0x7f0b9f6cea1c in parse_calendar_time ../src/shared/calendarspec.c:845
#3 0x7f0b9f6d1397 in calendar_spec_from_string ../src/shared/calendarspec.c:1084
#4 0x401570 in LLVMFuzzerTestOneInput ../src/fuzz/fuzz-calendarspec.c:17
#5 0x401ae0 in main ../src/fuzz/fuzz-main.c:39
#6 0x7f0b9e31b1a2 in __libc_start_main (/lib64/libc.so.6+0x271a2)
#7 0x40122d in _start (/home/fsumsal/repos/systemd/build/fuzz-calendarspec+0x40122d)
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior ../src/shared/calendarspec.c:666:48 in
```
(cherry picked from commit
c07f18ffd458a224e1784f128df26b340c1c39c8)
Lennart Poettering [Tue, 12 May 2020 15:08:39 +0000 (17:08 +0200)]
repart: suppress complaints about lack of BLKRRPART when operating on regular file
(cherry picked from commit
9a1deb8578268911f752129838e0f3c9a5cb89ea)
Lennart Poettering [Tue, 12 May 2020 09:20:39 +0000 (11:20 +0200)]
repart: explain when we exit early and don't do a thing
(cherry picked from commit
e2d65cd299355aba9afbaec24f04ed75ee3f0f1d)
Franck Bui [Thu, 2 Apr 2020 06:58:31 +0000 (08:58 +0200)]
mount: introduce mount_is_nofail() helper
(cherry picked from commit
5a7c4f4f3b3bc8f01fc2fa6ab55ed0b6665508e5)