summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Drop the text argument from assert_not_reached()Zbigniew Jędrzejewski-Szmek2021-08-03222-390/+380
| | | | | | | | | | | | | | | | | 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.
* Merge pull request #20346 from poettering/strlen-unsigned-fixYu Watanabe2021-08-032-5/+22
|\ | | | | CONST_MAX() integer size fix
| * macro: change DECIMAL_STR_WIDTH() return type to size_t, like strlen() and so onLennart Poettering2021-07-301-1/+1
| |
| * macro: sizeof() returns size_t, and that's goodLennart Poettering2021-07-301-2/+2
| | | | | | | | | | | | | | | | | | 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.
| * macro: relax CONST_MAX() type check a tiny bitLennart Poettering2021-07-301-2/+19
| | | | | | | | | | | | | | | | | | | | 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.
* | time-set: adjust system clock if rtc is far in futureEgor Ignatov2021-08-025-8/+41
| |
* | Merge pull request #20352 from poettering/copy-tweaksLuca Boccassi2021-08-024-59/+229
|\ \ | | | | | | various tweaks to copy.c
| * | btrfs-util: expose COPY_SIGTERM for btrfs_snapshot() tooLennart Poettering2021-08-022-3/+11
| | |
| * | copy: add COPY_SIGTERM, matching the existing COPY_SIGINTLennart Poettering2021-08-022-20/+30
| | |
| * | copy: add COPY_SYNCFS flagLennart Poettering2021-08-022-11/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * | copy: optionally fsync() files after copying themLennart Poettering2021-08-022-16/+118
| | | | | | | | | | | | | | | | | | 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.
| * | copy: tighten destination checks when copying filesLennart Poettering2021-08-021-6/+27
| | | | | | | | | | | | | | | | | | | | | | | | 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...)
| * | copy: move to single clean-up pathLennart Poettering2021-08-021-21/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | (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.
* | | Use correct `<poll.h>` includeDavid Seifert2021-08-022-2/+2
|/ / | | | | | | * `<sys/poll.h>` is not specified in POSIX
* | machined-varlink: fix double freeDavid Tardon2021-08-021-1/+1
| | | | | | | | Fixes: #18599
* | Use correct `<fcntl.h>` includeDavid Seifert2021-08-021-1/+1
| | | | | | | | * `<sys/fcntl.h>` is not specified in POSIX
* | cryptsetup: unbreak CI buildLennart Poettering2021-08-013-5/+35
| | | | | | | | | | | | | | | | | | | | 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.
* | coredump/stacktrace.c: avoid crash on binaries without NHDRSergei Trofimovich2021-07-311-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* | signal-util: fix typoLennart Poettering2021-07-301-1/+1
| | | | | | | | Noticed by @behrmann: https://github.com/systemd/systemd/pull/20156#discussion_r667451006
* | Merge pull request #20121 from poettering/bootctl-autoLennart Poettering2021-07-305-23/+60
|\ \ | | | | | | units: run "bootctl update" automatically after boot, to ensure boot loader is regularly updated
| * | update TODOLennart Poettering2021-07-301-4/+0
| | |
| * | boot: optionally update sd-boot on bootLennart Poettering2021-07-302-0/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * | bootctl: tweak "bootctl update" to be a NOP when boot loader is already ↵Lennart Poettering2021-07-302-19/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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)
* | | Merge pull request #20172 from poettering/import-util-tweaksLennart Poettering2021-07-304-23/+167
|\ \ \ | | | | | | | | Import-util: URL processing tweaks
| * | | test: add simple test for import-utilLennart Poettering2021-07-302-0/+74
| | | |
| * | | import-util: tweak url patching helperLennart Poettering2021-07-302-23/+93
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | | Merge pull request #20170 from poettering/moar-glyphsLennart Poettering2021-07-303-2/+20
|\ \ \ | | | | | | | | util: define more emoji glyphs
| * | | util: add one more helper for generating colored check mark glyphsLennart Poettering2021-07-301-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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)
| * | | glyph-util: add three more emojis to emoji listLennart Poettering2021-07-303-2/+16
| |/ /
* / / tpm2-util: auto-detect supported PCR banksLennart Poettering2021-07-308-16/+200
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* / rm-rf: refactor rm_rf_children(), split out body of directory iteration loopLennart Poettering2021-07-302-95/+131
|/ | | | | | 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.
* Merge pull request #20348 from poettering/free-and-replace-double-evalLuca Boccassi2021-07-303-10/+12
|\ | | | | make free_and_replace() double eval free
| * xdg-autostart-service: rely on the new double-eval-free free_and_replace()Lennart Poettering2021-07-291-4/+2
| | | | | | | | These semi-reverts 2744c7bb0176dc6b86a69acd4c449ea9e269e097
| * alloc-util: drop double eval from free_and_replace()Lennart Poettering2021-07-292-6/+10
| | | | | | | | Inspired by: 2744c7bb0176dc6b86a69acd4c449ea9e269e097
* | test: correctly detect ASan on s390xFrantisek Sumsal2021-07-301-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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> ```
* | main: fix type confusion in do_reexecute()Lennart Poettering2021-07-291-5/+10
|/ | | | | | | | | 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
* meson: add the versiondep to the static lib deplist as wellFrantisek Sumsal2021-07-291-1/+1
| | | | Follow-up to 99c645b81aa47899ae3e0f920947a7d86cca5a86.
* systemctl: allow set-property to be called with a glob patternZbigniew Jędrzejewski-Szmek2021-07-291-20/+33
| | | | | | | 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
* Merge pull request #20337 from poettering/oom-adj-fixLennart Poettering2021-07-294-7/+7
|\ | | | | make oom_score_adjust_is_valid() shared again
| * parse-util: use oom_score_adjust_is_valid() at one more placeLennart Poettering2021-07-281-2/+1
| |
| * Revert "Make oom_score_adjust_is_valid() static"Lennart Poettering2021-07-283-5/+6
| | | | | | | | This reverts commit 6bf3c6c9007ca87376d5dff1e029186a38736cdc.
* | Merge pull request #20339 from poettering/bus-vtable-indent-fixLennart Poettering2021-07-291-38/+41
|\ \ | | | | | | sd-bus: fix indentation in macros
| * | sd-bus: add brief inline comment explaining the "reserved" field in the bus ↵Lennart Poettering2021-07-281-2/+5
| | | | | | | | | | | | | | | | | | vtable structure Follow-up for: #20253
| * | sd-bus: fix indentation in macrosLennart Poettering2021-07-281-37/+37
|/ / | | | | | | We use multiples of 8 spaces indentation in our C code, do it here too.
* / manager: reexecute on SIGRTMIN+25, user instances onlyFranck Bui2021-07-282-2/+16
|/ | | | | | | | | | | | | | | | | | | | 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.
* update TODOLennart Poettering2021-07-281-0/+2
|
* added missing handling of button release eventsYegor Alexeyev2021-07-281-2/+42
|
* Use SKU to identify Dell clamshell models for accelerometer propertiesYao Wei2021-07-281-2/+2
| | | | | | | 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
* Merge pull request #20326 from keszybz/meson-0.53.2Luca Boccassi2021-07-2822-307/+292
|\ | | | | Use some more new meson features
| * meson: use meson's summary()Zbigniew Jędrzejewski-Szmek2021-07-281-77/+67
| | | | | | | | | | | | 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.