Commit graph

60617 commits

Author SHA1 Message Date
Lennart Poettering f8662fee2f install: make InstallChange enum type a proper type
We can just make this an enum, as long as we ensure it has enough range,
which we can do by adding -ERRNO_MAX as one possible value (at least on
GNU C). We already do that at multiple other places, so let's do this
here too.
2022-10-14 11:40:40 +02:00
Lennart Poettering 4554c178bf update TODO 2022-10-14 11:33:17 +02:00
Anita Zhang 658138f3af core: refactor manager varlink init
Split out per-socket code into a separate function to use as part of
serialize/deserialize in the next commit.
2022-10-14 01:59:12 -07:00
Anita Zhang 536827e05a varlink: refactor adding socket event source to the event loop 2022-10-14 01:59:09 -07:00
Lubomir Rintel 73bf6859cb udev/rules: add by-path and by-ibdev links to infiniband verbs
The uverbs devices are sequentially numbered and are not guarranteed to
stay stable across reboot.

At least one good person was disappointed by this, because they couldn't
find their device: https://bugzilla.redhat.com/show_bug.cgi?id=2036515

Let's add a few helpful links.
2022-10-14 12:18:08 +09:00
Zbigniew Jędrzejewski-Szmek aaf4325954
Merge pull request #24461 from keszybz/better-unmask-message
Better unmask message when unit is masked via kernel commandline
2022-10-13 23:17:49 +02:00
Zbigniew Jędrzejewski-Szmek bf3b0d5f29 shared/install: print warning when unmasking unit with cmdline mask
'systemctl unmask foo' will try to remove the symlink to /dev/null under /etc/.
But the unit may also be masked by a symlink under /run/generator, in particular
the one created by systemd-debug-generator based on systemd.mask=foo on the
kernel commandline. The unmask call cannot anything about this: even if it removed
the symlink from /run/generator, it'll be recreated on the next daemon-reload.
Thus, we can only warn about it.

Initially, I wanted to check if 'systemctl.mask' is defined on the kernel
command-line, but that's not effective, because such mask symlinks can be
created by other generators based on other conditions. Checking for runtime
mask is "dumber", but is more robust because it doesn't assume who created the
mask and why.

The handling of InstallInfo is the copied from install_info_symlink_wants().
It's pretty ugly, this whole code should be rewritten from scratch.

The message is printed, but the whole operation is still "successful". This
keep backwards compatibility: people might call unmask to remove filesystem
masks even if there's still a cmdline param in place. We allow 'systemctl
mask' to create such a mask, so 'unmask' should be able to remove it.

Fixes #22689.
2022-10-13 19:44:47 +02:00
Zbigniew Jędrzejewski-Szmek acb5b83438 shared/install: use cleanup func for InstallInfo*
In the next commit cleanup will be used in one more place. This change
avoids proliferation of the open-coded cleanup calls.
2022-10-13 19:44:47 +02:00
Zbigniew Jędrzejewski-Szmek 0047d54d42 shared/install: rename 'UnitFileInstallInfo' to 'InstallInfo'
- shorter is better
- name now matches the defining-file name

I was also considering UnitInstallInfo. Can change if people prefer that.
2022-10-13 19:44:47 +02:00
Zbigniew Jędrzejewski-Szmek 1308f72e83 shared/install: rename 'unit_file_change_type' to 'install_change' + followups
We had an anonymous enum with values called UNIT_FILE_…, which could easily be
confused with UNIT_FILE_… from UnitFileFlags enum. This commit renames the enum
values and also the variables which refer to them.
2022-10-13 19:44:47 +02:00
Zbigniew Jędrzejewski-Szmek 91810c8ffc shared/install: rename UnitFileInstallInfo.type to .install_mode 2022-10-13 19:44:47 +02:00
Zbigniew Jędrzejewski-Szmek 318031fdb2 shared/install: rename 'unit file type' to 'install mode'
git grep -l -nwi 'UnitFileType|UNIT_FILE_TYPE' | \
xargs sed -r -i 's/UnitFileType/InstallMode/g; s/UNIT_FILE_TYPE/INSTALL_MODE/g; s/unit_file_type/install_mode/g'
2022-10-13 19:44:47 +02:00
Zbigniew Jędrzejewski-Szmek cd44ec5a92 shared/install: rename UnitFileChange to InstallChange
It's shorter and more generic. The struct can contain info about changes to
unit files, but also symlinks and errors.
2022-10-13 19:44:47 +02:00
Zbigniew Jędrzejewski-Szmek 0f87041f94 shared/install: rename 'files' param to 'names'
… or 'name_or_path' or 'names_or_paths' as appropriate. Those functions are
generally called with unit names as arguments.
2022-10-13 19:44:47 +02:00
Yu Watanabe 52bcf45a6c sd-journal: use new() instead of newa() if too many items will be added
For safety, as the size may not be under our control.
2022-10-14 01:30:30 +09:00
Yu Watanabe 80c5cb825a
Merge pull request #24985 from yuwata/codeql
test: several cleanups suggested by CodeQL
2022-10-13 21:36:16 +09:00
Yu Watanabe 74522aa87f test: introduce __eq__() and __ne__()
Suggested by CodeQL#160 (https://github.com/systemd/systemd/security/code-scanning/160).
2022-10-13 17:41:48 +09:00
Yu Watanabe f9d1709c03 test: drop unused modules
Suggested by CodeQL#167 (https://github.com/systemd/systemd/security/code-scanning/167)
and CodeQL#168 (https://github.com/systemd/systemd/security/code-scanning/168).
2022-10-13 17:34:11 +09:00
Yu Watanabe 5c27347693 test: improve assertion message on failure
Suggested by CodeQL#169 (https://github.com/systemd/systemd/security/code-scanning/169).
2022-10-13 17:33:09 +09:00
Yu Watanabe 7ff7eadf42 TODO: fix typo 2022-10-13 17:15:50 +09:00
Lennart Poettering fd5dead7d6 update TODO 2022-10-13 09:48:01 +02:00
Lennart Poettering 29818c4e99 update NEWS 2022-10-13 09:48:01 +02:00
Franck Bui d1d8786c5b analyze: extend the dump command to accept patterns
The new function DumpPatterns() can be used to limit (drastically) the size of
the data returned by PID1. Hence the optimization of serializing data into a
file descriptor should be less relevant than having the possibility to limit
the data when communicating with the service manager remotely.

NB: when passing patterns, the dump command omits the version of the manager as
well as the features and the timestamps.
2022-10-13 07:47:42 +09:00
Yu Watanabe 17f6406bf2
Merge pull request #24625 from yuwata/dissect-image-open-and-lock-decrypted
dissect-image: open dissected and decrypted partitions
2022-10-13 07:47:08 +09:00
David Seifert d0523bb0d1 gpt-auto: allow using without cryptsetup
Fixes #24978
2022-10-13 06:39:38 +09:00
Yu Watanabe d2c6e79d89 dissect-image: introduce probe_filesystem_full() which can take file descriptor of device node
In dissect_loop_device(), we have opened the device node. Let's reuse
the file descriptor.
2022-10-13 05:09:27 +09:00
Yu Watanabe f7725647bb dissect-image: open dissected or decrypted partitions and mount through the file descriptor
If multiple services with the same encrypted image are simultaneously
starting, one may deactivate the dm device while others using it.
Or, similary, after (regular) partitions are dissected, another process
may try to remove them before we mount them.

To prevent such situations, let's keep the dissected and decrypted
partitions opened. Then, use the file descriptors when we mount the
partitions.

Fixes #24617.
2022-10-13 05:09:26 +09:00
Yu Watanabe f80015ff40 dissect-image: try to open device node before activating
Hopefully decrease the chance that the device is removed soon after
it is detected.
2022-10-13 05:08:33 +09:00
Yu Watanabe 12f5fbdf30 dissect-image: fix error handling of @cancel_deferred_remove DM command
See target_message() in drivers/md/dm-ioctl.c and
dm_cancel_deferred_remove() in drivers/md/dm.c.
2022-10-13 05:08:33 +09:00
Yu Watanabe 1d369d78b3 dissect-image: reduce indentation
No functional change, just refactoring.
2022-10-13 05:08:33 +09:00
Frantisek Sumsal b8dd27664c test: disable LSan in the ASan env wrapper
This wrapper is used in situations where  we don't care about *San reports,
we just want to make things work. However, with enabled LSan we might
trigger some bogus reports we're definitely not interested in, causing
unexpected test fails.

Spotted on C8S in TEST-34-DYNAMICUSERMIGRATE:
```
[10654.804162] testsuite-34.sh[56]: + systemctl start testservice-34-check-writable.service
         Starting testservice-34-check-writable.service...
[10655.055969] bash[546]: + set -o pipefail
[10655.056127] bash[546]: + declare -a writable_dirs
[10655.056234] bash[546]: + readarray -t writable_dirs
[10655.060838] bash[548]: ++ find / '(' -path /var/tmp -o -path /tmp -o -path /proc -o -path /dev/mqueue -o -path /dev/shm -o -path /sys/fs/bpf -o -path /dev/.lxc -o -path /sys/devices/system/cpu ')' -prune -o -type d -writable -print
[10655.061534] bash[549]: ++ sort -u
[10655.688740] bash[547]: =================================================================
[10655.689075] bash[547]: ==547==ERROR: LeakSanitizer: detected memory leaks
[10655.689246] bash[547]: Direct leak of 112 byte(s) in 1 object(s) allocated from:
[10655.743851] bash[547]:     #0 0x7ffff752d364  (/usr/lib64/clang/14.0.0/lib/libclang_rt.asan-powerpc64le.so+0x13d364) (BuildId: 321f4ed1caea6a1a4c37f9272e07275cf16f034d)
[10655.744060] bash[547]:     #1 0x1000b5d20 in xmalloc (/usr/bin/bash+0xb5d20) (BuildId: da38eb38f6870bdc2a6ef51c52aa6ce20921fe40)
[10655.744224] bash[547]:     #2 0x100083338  (/usr/bin/bash+0x83338) (BuildId: da38eb38f6870bdc2a6ef51c52aa6ce20921fe40)
[10655.744393] bash[547]:     #3 0x10008847c  (/usr/bin/bash+0x8847c) (BuildId: da38eb38f6870bdc2a6ef51c52aa6ce20921fe40)
[10655.744552] bash[547]:     #4 0x1000af6ec in redirection_expand (/usr/bin/bash+0xaf6ec) (BuildId: da38eb38f6870bdc2a6ef51c52aa6ce20921fe40)
[10655.744728] bash[547]:     #5 0x1000b005c  (/usr/bin/bash+0xb005c) (BuildId: da38eb38f6870bdc2a6ef51c52aa6ce20921fe40)
[10655.744886] bash[547]:     #6 0x1000b1388 in do_redirections (/usr/bin/bash+0xb1388) (BuildId: da38eb38f6870bdc2a6ef51c52aa6ce20921fe40)
[10655.745051] bash[547]:     #7 0x100050484  (/usr/bin/bash+0x50484) (BuildId: da38eb38f6870bdc2a6ef51c52aa6ce20921fe40)
[10655.745208] bash[547]:     #8 0x100052160 in execute_command_internal (/usr/bin/bash+0x52160) (BuildId: da38eb38f6870bdc2a6ef51c52aa6ce20921fe40)
[10655.745376] bash[547]:     #9 0x100052a10 in execute_command_internal (/usr/bin/bash+0x52a10) (BuildId: da38eb38f6870bdc2a6ef51c52aa6ce20921fe40)
[10655.745536] bash[547]:     #10 0x100053e38 in execute_command (/usr/bin/bash+0x53e38) (BuildId: da38eb38f6870bdc2a6ef51c52aa6ce20921fe40)
[10655.745711] bash[547]:     #11 0x1000529d8 in execute_command_internal (/usr/bin/bash+0x529d8) (BuildId: da38eb38f6870bdc2a6ef51c52aa6ce20921fe40)
[10655.745870] bash[547]:     #12 0x100053e38 in execute_command (/usr/bin/bash+0x53e38) (BuildId: da38eb38f6870bdc2a6ef51c52aa6ce20921fe40)
[10655.746038] bash[547]:     #13 0x1000529d8 in execute_command_internal (/usr/bin/bash+0x529d8) (BuildId: da38eb38f6870bdc2a6ef51c52aa6ce20921fe40)
[10655.746198] bash[547]:     #14 0x100053e38 in execute_command (/usr/bin/bash+0x53e38) (BuildId: da38eb38f6870bdc2a6ef51c52aa6ce20921fe40)
[10655.746367] bash[547]:     #15 0x1000529d8 in execute_command_internal (/usr/bin/bash+0x529d8) (BuildId: da38eb38f6870bdc2a6ef51c52aa6ce20921fe40)
[10655.746548] bash[547]:     #16 0x100053e38 in execute_command (/usr/bin/bash+0x53e38) (BuildId: da38eb38f6870bdc2a6ef51c52aa6ce20921fe40)
[10655.746741] bash[547]:     #17 0x1000529d8 in execute_command_internal (/usr/bin/bash+0x529d8) (BuildId: da38eb38f6870bdc2a6ef51c52aa6ce20921fe40)
[10655.746897] bash[547]:     #18 0x100053e38 in execute_command (/usr/bin/bash+0x53e38) (BuildId: da38eb38f6870bdc2a6ef51c52aa6ce20921fe40)
[10655.747067] bash[547]:     #19 0x1000529d8 in execute_command_internal (/usr/bin/bash+0x529d8) (BuildId: da38eb38f6870bdc2a6ef51c52aa6ce20921fe40)
[10655.747227] bash[547]:     #20 0x100053e38 in execute_command (/usr/bin/bash+0x53e38) (BuildId: da38eb38f6870bdc2a6ef51c52aa6ce20921fe40)
[10655.747414] bash[547]:     #21 0x1000529d8 in execute_command_internal (/usr/bin/bash+0x529d8) (BuildId: da38eb38f6870bdc2a6ef51c52aa6ce20921fe40)
[10655.747573] bash[547]:     #22 0x100053e38 in execute_command (/usr/bin/bash+0x53e38) (BuildId: da38eb38f6870bdc2a6ef51c52aa6ce20921fe40)
[10655.747741] bash[547]:     #23 0x1000529d8 in execute_command_internal (/usr/bin/bash+0x529d8) (BuildId: da38eb38f6870bdc2a6ef51c52aa6ce20921fe40)
[10655.747896] bash[547]:     #24 0x100053e38 in execute_command (/usr/bin/bash+0x53e38) (BuildId: da38eb38f6870bdc2a6ef51c52aa6ce20921fe40)
[10655.748064] bash[547]:     #25 0x1000529d8 in execute_command_internal (/usr/bin/bash+0x529d8) (BuildId: da38eb38f6870bdc2a6ef51c52aa6ce20921fe40)
[10655.748225] bash[547]:     #26 0x100053e38 in execute_command (/usr/bin/bash+0x53e38) (BuildId: da38eb38f6870bdc2a6ef51c52aa6ce20921fe40)
[10655.748390] bash[547]:     #27 0x1000529d8 in execute_command_internal (/usr/bin/bash+0x529d8) (BuildId: da38eb38f6870bdc2a6ef51c52aa6ce20921fe40)
[10655.748553] bash[547]:     #28 0x1000bf91c in parse_and_execute (/usr/bin/bash+0xbf91c) (BuildId: da38eb38f6870bdc2a6ef51c52aa6ce20921fe40)
[10655.748717] bash[547]:     #29 0x1000311ec  (/usr/bin/bash+0x311ec) (BuildId: da38eb38f6870bdc2a6ef51c52aa6ce20921fe40)
[10655.748883] bash[547]: Direct leak of 17 byte(s) in 1 object(s) allocated from:
...
```
2022-10-12 21:12:17 +02:00
Luca Boccassi 5762dbfad6
Merge pull request #24883 from bluca/extrel_force
portable: allow caller to override extension-release name check
2022-10-12 20:20:46 +02:00
Zbigniew Jędrzejewski-Szmek 31b5f92016
Merge pull request #24974 from yuwata/sd-journal
sd-journal: several cleanups and follow-ups for compact mode PR
2022-10-12 17:47:05 +02:00
Michael Biebl 63238ef937
Merge pull request #24976 from mbiebl/logind-fix-dbus-on_ac_power
logind: fix getting property OnExternalPower via D-Bus
2022-10-12 16:55:21 +02:00
Luca Boccassi a063184097
Merge pull request #24934 from keszybz/remove-nss-lookup
Remove nss lookups from pid1
2022-10-12 15:21:40 +02:00
Jan Janssen 1a9874905a boot: Always reconnect all drivers
Fixes: #23442
2022-10-12 13:36:22 +02:00
Gerd Hoffmann 5b3e33c26f boot: export reconnect()
Also give it a more descriptive name.
2022-10-12 13:36:22 +02:00
Jan Janssen 2985110b6f stub: Correctly handle multi node file paths
Fixes: #24955
2022-10-12 13:19:34 +02:00
Jan Janssen 616a80fe1a boot: Use device_path_to_str 2022-10-12 13:19:34 +02:00
Jan Janssen 3b3eb196a2 boot: Add device_path_to_str 2022-10-12 13:19:34 +02:00
Yu Watanabe 6c65a9e1d6
Merge pull request #24973 from keszybz/simplify-variable-declarations
Simplify variable declarations
2022-10-12 19:36:47 +09:00
Yu Watanabe df04b9ed86 sd-journal: add comments that journal_file_move_to() may break previous read data
We have already made similar mistakes several times, e.g.
b8478c14c7, and
b596d06c38. Let's document the function
invalidates previously read objects.
2022-10-12 19:32:59 +09:00
Yu Watanabe a1640191b4 sd-journal: re-read object on next try
Otherwise, the object may be already altered by another cached entry.
2022-10-12 19:32:59 +09:00
Yu Watanabe 231741d355 sd-journal: re-read object from cache
Fixes a bug introduced by 0e35afff1d.

Replaces 3388a4b582.
2022-10-12 19:32:59 +09:00
Yu Watanabe 8f71023764 sd-journal: drop unused argument
Follow-up for a9089a6604.
2022-10-12 19:32:59 +09:00
Yu Watanabe cc938e4a0a sd-journal: several coding style updates
- rename `ret` -> `ret_object`,
- add missing assertions,
- add FIXME comments,
- wrap function arguments, etc., etc..
2022-10-12 19:32:59 +09:00
Michael Biebl 63168cb517 logind: fix getting property OnExternalPower via D-Bus
The BUS_DEFINE_PROPERTY_GET_GLOBAL macro requires a value as third
argument, so we need to call manager_is_on_external_power(). Otherwise
the function pointer is interpreted as a boolean and always returns
true:

```
$ busctl get-property org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager OnExternalPower
b true
$ /lib/systemd/systemd-ac-power  --verbose
no
```

Thanks: Helmut Grohne <helmut@subdivi.de>
Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1021644
2022-10-12 11:15:27 +02:00
Luca Boccassi 06768b90a3 portable: allow caller to override extension-release name check
When the --force flag is used, do not insist that the extension-release
file has to match the extension image name
2022-10-12 09:57:24 +01:00
Luca Boccassi aad813bf17 portable: rename flag PORTABLE_FORCE -> PORTABLE_FORCE_ATTACH
The name is used only internally, also it was just added.
Allows adding different types of force flags.
2022-10-12 09:57:24 +01:00
Luca Boccassi 192a9b70c2 os-util: split out extension-release xattr helper 2022-10-12 09:57:24 +01:00