]> git.ipfire.org Git - thirdparty/systemd.git/log
thirdparty/systemd.git
4 years agosleep: clarify that failure setting env var is not fatal 19693/head
Lennart Poettering [Fri, 21 May 2021 18:24:54 +0000 (20:24 +0200)] 
sleep: clarify that failure setting env var is not fatal

4 years agosleep: if hybrid sleep fails, do regular suspend
Lennart Poettering [Fri, 21 May 2021 16:39:38 +0000 (18:39 +0200)] 
sleep: if hybrid sleep fails, do regular suspend

Fixes #19550

4 years agosleep: remove duplicate logging
Lennart Poettering [Fri, 21 May 2021 16:39:06 +0000 (18:39 +0200)] 
sleep: remove duplicate logging

execute() logs about all errors, hence only log about what's new, i.e.
what we'll do as consequence, and don't mention the error cause again.

4 years agosleep: don't check for EADV
Lennart Poettering [Fri, 21 May 2021 16:27:04 +0000 (18:27 +0200)] 
sleep: don't check for EADV

EADV is not generated anymore since
6d176522f5480ea9e9a83de5ef5ea5e0d95b79cb, let's hence not check for it
anymore.

4 years agosleep: can_sleep_state() + can_sleep_disk() don#t return plain booleans
Lennart Poettering [Fri, 21 May 2021 16:26:48 +0000 (18:26 +0200)] 
sleep: can_sleep_state() + can_sleep_disk() don#t return plain booleans

4 years agosleep: use SleepOperation enum everywhere and drop sleep_settings()
Lennart Poettering [Fri, 21 May 2021 16:23:42 +0000 (18:23 +0200)] 
sleep: use SleepOperation enum everywhere and drop sleep_settings()

Instead of comparing strings everywhere, let's use the new enum. This
allows us to drop sleep_settings(), since the operation enum can be
directly used as index into the config settings.

Some minor other refactoring is done, but mostly just shifting thing
around a bit, no actual change in behaviour.

4 years agosleep: introduce high-level SleepOperation enum
Lennart Poettering [Thu, 20 May 2021 20:31:17 +0000 (22:31 +0200)] 
sleep: introduce high-level SleepOperation enum

4 years agounits: make sure importd has CAP_LINUX_IMMUTABLE flag
Lennart Poettering [Fri, 21 May 2021 20:04:33 +0000 (22:04 +0200)] 
units: make sure importd has CAP_LINUX_IMMUTABLE flag

Since d8f9686c0f1f276c0a687d9bd69f3adf33f15a95 we use the chattr +i flag
for marking containers in directories as reead-only. But to do so we
need the cap for it, hence grant it.

Fixes: #19115
4 years agoMerge pull request #19594 from yuwata/network-nexthop-group
Yu Watanabe [Sat, 22 May 2021 07:01:13 +0000 (16:01 +0900)] 
Merge pull request #19594 from yuwata/network-nexthop-group

network: nexthop: add Group= setting to configure multipath route with group nexthop

4 years agoMerge pull request #19691 from poettering/read-virtual-file-tweaks
Yu Watanabe [Sat, 22 May 2021 06:59:17 +0000 (15:59 +0900)] 
Merge pull request #19691 from poettering/read-virtual-file-tweaks

tweaks to read_virtual_file()

4 years agounits: skip some units in the initrd
Zbigniew Jędrzejewski-Szmek [Fri, 21 May 2021 08:53:25 +0000 (10:53 +0200)] 
units: skip some units in the initrd

I'm working on building initramfs images directly from normal packages, and it
doesn't make sense for those units to be started. Pristine system rpms need to
behave correctly as much as possible also in the initrd, and those units are
enabled by the rpms. There usually isn't enough time for the timer to actually
fire, but starting it gives a line on the console and generally looks confusing
and sloppy. Flushing the journal means that its actually lost, since the real
/var is not available yet.

Another approach would be not enable those units, but right now they are
statically enabled, and changing that would be more work, and doesn't really
seem necessary, since the condition checks are very quick.

Checking for /etc/initrd-release is the standard condition that the initrd
units use, so let's do the same here.

4 years agotest-network: add a test case for nexthop Group= setting 19594/head
Yu Watanabe [Thu, 13 May 2021 02:11:48 +0000 (11:11 +0900)] 
test-network: add a test case for nexthop Group= setting

4 years agonetwork: nexthop: add Group= setting to configure multipath route with group nexthop
Yu Watanabe [Fri, 14 May 2021 01:15:23 +0000 (10:15 +0900)] 
network: nexthop: add Group= setting to configure multipath route with group nexthop

4 years agonetwork: nexthop: IFF_UP flag is required for nexthops which attached to a link
Yu Watanabe [Tue, 18 May 2021 03:20:46 +0000 (12:20 +0900)] 
network: nexthop: IFF_UP flag is required for nexthops which attached to a link

4 years agonetwork: make nexthop_add(), nexthop_configure() and friends return 0 on success
Yu Watanabe [Wed, 12 May 2021 19:59:56 +0000 (04:59 +0900)] 
network: make nexthop_add(), nexthop_configure() and friends return 0 on success

After request queue is introduced, the return value on success is unused.

4 years agofileio: read_virtual_file(): on last attempt ignore file size 19691/head
Lennart Poettering [Fri, 21 May 2021 15:40:19 +0000 (17:40 +0200)] 
fileio: read_virtual_file(): on last attempt ignore file size

Apparently the reported file size was misleading on this file, hence
ignore it on our last loop attempt and just pretend it wasn't reported
at all.

4 years agotest-fileio: run read_virtual_file() for a couple of more interesting sizes
Lennart Poettering [Fri, 21 May 2021 15:36:40 +0000 (17:36 +0200)] 
test-fileio: run read_virtual_file() for a couple of more interesting sizes

4 years agotest-fileio: fix confusing log output
Lennart Poettering [Fri, 21 May 2021 15:35:12 +0000 (17:35 +0200)] 
test-fileio: fix confusing log output

Previously we'd pass all return values of read_virtual_file() to
log_info_errno() as error, but that makes no sense, given that we
sometimes return positive one with means "not truncated" but we'd show
as "Permission denied. Let's fix this, and log differently for sucess
and error.

4 years agofileio: read_virtual_file() don't tweak buffer for returning it when we aren't return...
Lennart Poettering [Fri, 21 May 2021 15:33:32 +0000 (17:33 +0200)] 
fileio: read_virtual_file() don't tweak buffer for returning it when we aren't returning it

Let's avoid some redundant work.

Moreover, let' not check for NUL bytes in the buffer if we don't return
the buffer.

4 years agofileio: fix typo in comment
Lennart Poettering [Fri, 21 May 2021 14:32:37 +0000 (16:32 +0200)] 
fileio: fix typo in comment

4 years agofileio: read_virtual_file(): exit once the max_size limit is reached
Lennart Poettering [Fri, 21 May 2021 14:31:52 +0000 (16:31 +0200)] 
fileio: read_virtual_file(): exit once the max_size limit is reached

Alternative to: #19682

4 years agofileio: if we try to read a file larger than SIZE_MAX this is not a problem if a...
Lennart Poettering [Fri, 21 May 2021 14:30:52 +0000 (16:30 +0200)] 
fileio: if we try to read a file larger than SIZE_MAX this is not a problem if a max_size is specified

i.e. 32bit userspace reading /proc/kcore on a 64bit kernel with max_size
should not needlessly fail.

4 years agonetwork: route: make stored multipath route weight equivalent to hop of nexthop
Yu Watanabe [Thu, 13 May 2021 06:07:35 +0000 (15:07 +0900)] 
network: route: make stored multipath route weight equivalent to hop of nexthop

4 years agotest-env-util: use streq_ptr when comparing directly the result of getenv
Luca Boccassi [Fri, 21 May 2021 12:39:24 +0000 (13:39 +0100)] 
test-env-util: use streq_ptr when comparing directly the result of getenv

It might return NULL.

Fixes CID #1453247

4 years agosd-device: use strjoina() more again in sd_device_new_from_subsystem_sysname()
Lennart Poettering [Mon, 10 May 2021 14:41:46 +0000 (16:41 +0200)] 
sd-device: use strjoina() more again in sd_device_new_from_subsystem_sysname()

This reverts a major part of: e17c95af8e450caacde692875b30675cea75211f

Using format strings for concatenating strings is pretty unefficient,
and using PATH_MAX buffers unpretty as well. Let's revert to using
strjoina() as before.

However, to fix the fuzz issue at hand, let's explicitly verify the two
input strings ensuring they are valid path names. This includes a length
check (to 2K each), thus making things prettier, faster and using less
memory again.

4 years agoMerge pull request #19676 from bluca/coverity
Lennart Poettering [Fri, 21 May 2021 15:52:36 +0000 (17:52 +0200)] 
Merge pull request #19676 from bluca/coverity

Fix two new coverity issues

4 years agoMerge pull request #19672 from yuwata/strextend
Lennart Poettering [Fri, 21 May 2021 15:52:14 +0000 (17:52 +0200)] 
Merge pull request #19672 from yuwata/strextend

tree-wide: introduce strextendf_with_separator() and use strextend() or freinds

4 years agoMerge pull request #19647 from ddstreet/test-oomd-failure
Lennart Poettering [Fri, 21 May 2021 14:35:16 +0000 (16:35 +0200)] 
Merge pull request #19647 from ddstreet/test-oomd-failure

handle lack of kernel support for some cgroup files

4 years agonetwork: fix an infinite loop
Yu Watanabe [Thu, 20 May 2021 07:14:17 +0000 (16:14 +0900)] 
network: fix an infinite loop

Fixes #19467.

4 years agoman: prevent race condition when generating systemd.directives.xml
asavah [Wed, 19 May 2021 20:58:02 +0000 (23:58 +0300)] 
man: prevent race condition when generating systemd.directives.xml

4 years agooom: log one-time warning if kernel doesn't provide memory.swap.current 19647/head
Dan Streetman [Fri, 14 May 2021 12:08:33 +0000 (08:08 -0400)] 
oom: log one-time warning if kernel doesn't provide memory.swap.current

The kernel can be compiled without support for any memory.swap.* files, or
it can be disabled at boot time with the 'swapaccount=0' boot parameter,
so if the file doesn't exist log warning indicating the kernel doesn't
support the file and the user may need to try using the 'swapaccount=1'
boot param.

Note that the actual error from the call to fopen() is ENOENT, but
that is translated into ENODATA in cg_get_attribute_as_uint64()

4 years agopsi: update is_pressure_supported to read file
Dan Streetman [Wed, 19 May 2021 18:22:28 +0000 (14:22 -0400)] 
psi: update is_pressure_supported to read file

The kernel still provides the /proc and cgroup pressure files even
if its psi support is disabled, so we need to actually read the files
to verify they don't return -EOPNOTSUPP

4 years agolog: add log_once() and log_once_errno() macros
Dan Streetman [Wed, 19 May 2021 14:22:21 +0000 (10:22 -0400)] 
log: add log_once() and log_once_errno() macros

These macros will log a message at the specified level only the first time
they are called. On all later calls, if the specified level is debug, the
logs will be suppressed; otherwise the message will be logged at debug.

4 years agomacro: add ONCE macro that evaluates to 1 one time
Dan Streetman [Wed, 19 May 2021 14:01:59 +0000 (10:01 -0400)] 
macro: add ONCE macro that evaluates to 1 one time

Every location that this macro is used, it will be true the first
time it's checked, then false each time after that.

This can be useful for things such as one-time logging.

4 years agofileio: make return parameters of read_virtual_file() optional
Lennart Poettering [Thu, 20 May 2021 19:26:56 +0000 (21:26 +0200)] 
fileio: make return parameters of read_virtual_file() optional

Prompted by: #19647

4 years agoMerge pull request #19551 from cgzones/fix_reload
Lennart Poettering [Thu, 20 May 2021 19:37:59 +0000 (21:37 +0200)] 
Merge pull request #19551 from cgzones/fix_reload

selinux: reload label db on policy load with libselinux 3.2

4 years agoMerge pull request #19605 from yuwata/network-fdb-outgoing-interface
Lennart Poettering [Thu, 20 May 2021 19:33:14 +0000 (21:33 +0200)] 
Merge pull request #19605 from yuwata/network-fdb-outgoing-interface

network: bridge-fdb: add support to specify outgoing interface

4 years agoman: mention that drop-in files are merged in alphanumeric order
Yu Watanabe [Thu, 20 May 2021 06:55:06 +0000 (15:55 +0900)] 
man: mention that drop-in files are merged in alphanumeric order

This addresses the request in https://github.com/systemd/systemd/issues/19467#issuecomment-829332877.

4 years agosysv-generator: use strextend_with_separator() 19672/head
Yu Watanabe [Thu, 20 May 2021 05:54:32 +0000 (14:54 +0900)] 
sysv-generator: use strextend_with_separator()

4 years agosystemctl: use strextend_with_separator()
Yu Watanabe [Thu, 20 May 2021 05:58:12 +0000 (14:58 +0900)] 
systemctl: use strextend_with_separator()

4 years agorun: use strextend_with_separator()
Yu Watanabe [Thu, 20 May 2021 05:41:48 +0000 (14:41 +0900)] 
run: use strextend_with_separator()

4 years agonspawn: use strextendf_with_separator()
Yu Watanabe [Thu, 20 May 2021 05:36:14 +0000 (14:36 +0900)] 
nspawn: use strextendf_with_separator()

4 years agoresolved: check return value of gcrypt APIs 19676/head
Luca Boccassi [Thu, 20 May 2021 09:36:18 +0000 (10:36 +0100)] 
resolved: check return value of gcrypt APIs

Coverity complains about missing error check.

CID #1453234

4 years agojournal: fix uninitialized variable use
Luca Boccassi [Thu, 20 May 2021 09:35:36 +0000 (10:35 +0100)] 
journal: fix uninitialized variable use

If the journal file being processed is archivied, seqnum_id will not be
initialized before being passed on, and coverity complains.
Initialize it to zero.

CID #1453235

4 years agotest-network: add a testcase for OutgoingInterface= in [BridgeFDB] 19605/head
Yu Watanabe [Fri, 14 May 2021 05:52:32 +0000 (14:52 +0900)] 
test-network: add a testcase for OutgoingInterface= in [BridgeFDB]

4 years agonetwork: bridge-fdb: add support to specify outgoing interface
Susant Sahani [Fri, 14 May 2021 05:28:18 +0000 (14:28 +0900)] 
network: bridge-fdb: add support to specify outgoing interface

4 years agonetwork: use queue to configure bridge FDB
Yu Watanabe [Fri, 14 May 2021 05:05:00 +0000 (14:05 +0900)] 
network: use queue to configure bridge FDB

4 years agonetwork: bridgeFDB: rename FdbEntry -> BridgeFDB
Yu Watanabe [Fri, 14 May 2021 04:24:48 +0000 (13:24 +0900)] 
network: bridgeFDB: rename FdbEntry -> BridgeFDB

4 years agonetworkctl: use strextend()
Yu Watanabe [Thu, 20 May 2021 05:28:20 +0000 (14:28 +0900)] 
networkctl: use strextend()

4 years agosd-bus: use strextend()
Yu Watanabe [Thu, 20 May 2021 05:24:57 +0000 (14:24 +0900)] 
sd-bus: use strextend()

4 years agoescape: use strextend()
Yu Watanabe [Thu, 20 May 2021 05:22:58 +0000 (14:22 +0900)] 
escape: use strextend()

4 years agopid1: use strextend_with_separator()
Yu Watanabe [Thu, 20 May 2021 05:19:22 +0000 (14:19 +0900)] 
pid1: use strextend_with_separator()

4 years agoenv-util: use strextend()
Yu Watanabe [Thu, 20 May 2021 05:15:34 +0000 (14:15 +0900)] 
env-util: use strextend()

4 years agonetwork: route: make log_route_debug() show weight for multipath route
Yu Watanabe [Thu, 20 May 2021 05:07:34 +0000 (14:07 +0900)] 
network: route: make log_route_debug() show weight for multipath route

4 years agostring-util: introduce strextendf_with_separator()
Yu Watanabe [Thu, 20 May 2021 04:56:37 +0000 (13:56 +0900)] 
string-util: introduce strextendf_with_separator()

4 years agoMerge pull request #19669 from mrc0mmand/ci-mkosi-arch
Luca Boccassi [Thu, 20 May 2021 09:14:30 +0000 (10:14 +0100)] 
Merge pull request #19669 from mrc0mmand/ci-mkosi-arch

ci: work around #19442 to make CI happy again

4 years agonspawn: fix build failure
Yu Watanabe [Thu, 20 May 2021 06:04:15 +0000 (15:04 +0900)] 
nspawn: fix build failure

This fixes a conflict between #19555 and #19653.

4 years agoman: document default rlimits
Anita Zhang [Wed, 19 May 2021 07:33:59 +0000 (00:33 -0700)] 
man: document default rlimits

Fixes #19645

4 years agotest: enable fuzz regression tests by default
Zbigniew Jędrzejewski-Szmek [Wed, 19 May 2021 14:44:13 +0000 (16:44 +0200)] 
test: enable fuzz regression tests by default

This ensures that the fuzz test code is also built by default.
It also increases the test coverage a bit. Compiling the tests
*with* sanitizers is painfully slow, so this is not enabled. But
just compiling them sauté is hardly noticable. Running the tests
increases the test count and runtime:
  622 tests, 26 s
to
  922 tests, 35 s
I think this is acceptable.

4 years agoMerge pull request #19555 from poettering/nspawn-bind-user
Lennart Poettering [Thu, 20 May 2021 05:33:51 +0000 (07:33 +0200)] 
Merge pull request #19555 from poettering/nspawn-bind-user

nspawn: add --bind-user= feature for binding  host user+homedir into a container

4 years agoMerge pull request #19591 from poettering/terminal-fixes
Lennart Poettering [Thu, 20 May 2021 05:33:21 +0000 (07:33 +0200)] 
Merge pull request #19591 from poettering/terminal-fixes

five terminal handling fixes

4 years agobuild tests: check that Github pages can be built successfully
Luca Boccassi [Wed, 19 May 2021 13:45:47 +0000 (14:45 +0100)] 
build tests: check that Github pages can be built successfully

4 years agoMerge pull request #19662 from yuwata/memdup
Lennart Poettering [Wed, 19 May 2021 21:24:55 +0000 (23:24 +0200)] 
Merge pull request #19662 from yuwata/memdup

util: make memdup() or friends safer

4 years agoMerge pull request #19653 from poettering/greedy-realloc-more
Lennart Poettering [Wed, 19 May 2021 21:22:44 +0000 (23:22 +0200)] 
Merge pull request #19653 from poettering/greedy-realloc-more

malloc_usable_size() tweaks

4 years agoci: skip root tty login 19669/head
Frantisek Sumsal [Wed, 19 May 2021 20:03:38 +0000 (22:03 +0200)] 
ci: skip root tty login

We use the `autologin` mkosi option (see
mkosi.default.d/10-systemd.conf), so the pexpect root login throws
a (harmless) error:

```
Arch Linux (built from systemd tree)
Kernel 5.4.0-1047-azure on an x86_64 (console)

image login: root (automatic login)

root
root
[root@image ~]# systemctl poweroff
root
-bash: root: command not found
[root@image ~]# systemctl poweroff
```

4 years agoci: show image summary
Frantisek Sumsal [Wed, 19 May 2021 19:29:42 +0000 (21:29 +0200)] 
ci: show image summary

4 years agoci: work around #19442 to make CI happy again
Frantisek Sumsal [Wed, 19 May 2021 18:15:53 +0000 (20:15 +0200)] 
ci: work around #19442 to make CI happy again

Let's introduce a somewhat ugly workaround for #19442 and retry
the systemd-nspawn image boot test up to three times in case it dies
with the dissect timeout. Since this issue occurs only in the Arch job,
limit the workaround to this job only.

4 years agoMerge pull request #19603 from yuwata/network-link-get-by-name
Lennart Poettering [Wed, 19 May 2021 19:35:48 +0000 (21:35 +0200)] 
Merge pull request #19603 from yuwata/network-link-get-by-name

network: introduce link_get_by_name() and use it in resolving interface name specifier in MultiPathRoute=

4 years agoMerge pull request #19656 from yuwata/network-trivial-cleanups
Lennart Poettering [Wed, 19 May 2021 19:34:59 +0000 (21:34 +0200)] 
Merge pull request #19656 from yuwata/network-trivial-cleanups

network: several trivial cleanups

4 years agokbd-model-map: add mapping 'es-dvorak'
Franck Bui [Wed, 19 May 2021 08:18:21 +0000 (10:18 +0200)] 
kbd-model-map: add mapping 'es-dvorak'

And update test-keymap-util accordingly.

While at it, make sure to use tabs everywhere.

4 years agotest: reduce debugging logs in test-event
Yu Watanabe [Wed, 19 May 2021 08:08:59 +0000 (17:08 +0900)] 
test: reduce debugging logs in test-event

The logs mostly give no information, but fill CI results.

4 years agosystemctl: re-align colon in status output
Lennart Poettering [Fri, 14 May 2021 16:20:32 +0000 (18:20 +0200)] 
systemctl: re-align colon in status output

4 years agoterminal: don't hardcode major number of PTYs 19591/head
Lennart Poettering [Wed, 12 May 2021 14:05:40 +0000 (16:05 +0200)] 
terminal: don't hardcode major number of PTYs

Hardcoding major numbers sucks. And we generally don't do it, except
when determining whether something is a PTY. Thing though is that we
don't actually need to do that here either, hence don#t.

4 years agoman: document new nspawn --bind-user= feature 19555/head
Lennart Poettering [Fri, 7 May 2021 09:44:26 +0000 (11:44 +0200)] 
man: document new nspawn --bind-user= feature

4 years agonspawn: add new --bind-user= option for binding a host user into the container
Lennart Poettering [Wed, 5 May 2021 10:45:22 +0000 (12:45 +0200)] 
nspawn: add new --bind-user= option for binding a host user into the container

This new option does three things for a host user specified via
--bind-user=:

1. Bind mount the home directory from the host directory into
   /run/host/home/<username>

2. Install an additional user namepace UID/GID mapping mapping the host
   UID/GID of the host user to an unused one from the container in the range
   60514…60577.

3. Synthesize a user/group record for the user/group under the same name
   as on the host, with minimized information, and the UID/GID set to
   the mapped UID/GID. This data is written to /run/host/userdb/ where
   nss-system will pick it up.

This should make sharing users and home directories from host into the
container pretty seamless, under some conditions:

1. User namespacing must be used.

2. The host UID/GID of the user/group cannot be in the range assigned to
   the container (kernel already refuses this, as this would mean two
   host UIDs/GIDs might end up being mapped to the same continer
   UID/GID.

3. There's a free UID/GID in the aforementioned range in the container,
   and the name of the user/group is not used in the container.

4. Container payload is new enough to include an nss-systemd version
   that picks up records from /run/host/userdb/

4 years agonspawn: export userns_mkdir() + userns_lchown() so that it can be used elsewhere...
Lennart Poettering [Wed, 5 May 2021 10:29:01 +0000 (12:29 +0200)] 
nspawn: export userns_mkdir() + userns_lchown() so that it can be used elsewhere in nspawn

4 years agouser-record: optionally, allow parsing empty user record JSON objects
Lennart Poettering [Wed, 5 May 2021 08:45:48 +0000 (10:45 +0200)] 
user-record: optionally, allow parsing empty user record JSON objects

4 years agoexecute: don't chown/chmod non-TTY inodes thinking they were TTYs
Lennart Poettering [Wed, 12 May 2021 12:00:07 +0000 (14:00 +0200)] 
execute: don't chown/chmod non-TTY inodes thinking they were TTYs

Fixes: #19213
This is a safety net for invalid configurations, see the original bug
report.

4 years agocore: use GID_INVALID instead of -1 where appropriate
Lennart Poettering [Wed, 12 May 2021 11:49:37 +0000 (13:49 +0200)] 
core: use GID_INVALID instead of -1 where appropriate

4 years agoterminal-util: use _cleanup_close_ where appropriate
Lennart Poettering [Wed, 12 May 2021 11:47:45 +0000 (13:47 +0200)] 
terminal-util: use _cleanup_close_ where appropriate

4 years agoterminal-util: add extra validity checks that we operate on a TTY before doing so
Lennart Poettering [Wed, 12 May 2021 11:45:48 +0000 (13:45 +0200)] 
terminal-util: add extra validity checks that we operate on a TTY before doing so

Prompted by #19213, but not fixing it.

This is mostly paranoia that we don't do stuff on inodes that aren't
actually ttys.

4 years agoterminal-util: add debug logging for when TTY ioctls fail
Lennart Poettering [Wed, 12 May 2021 11:45:01 +0000 (13:45 +0200)] 
terminal-util: add debug logging for when TTY ioctls fail

4 years agoalloc-util: simplify GREEDY_REALLOC() logic by relying on malloc_usable_size() 19653/head
Lennart Poettering [Tue, 18 May 2021 21:01:32 +0000 (23:01 +0200)] 
alloc-util: simplify GREEDY_REALLOC() logic by relying on malloc_usable_size()

We recently started making more use of malloc_usable_size() and rely on
it (see the string_erase() story). Given that we don't really support
sytems where malloc_usable_size() cannot be trusted beyond statistics
anyway, let's go fully in and rework GREEDY_REALLOC() on top of it:
instead of passing around and maintaining the currenly allocated size
everywhere, let's just derive it automatically from
malloc_usable_size().

I am mostly after this for the simplicity this brings. It also brings
minor efficiency improvements I guess, but things become so much nicer
to look at if we can avoid these allocation size variables everywhere.

Note that the malloc_usable_size() man page says relying on it wasn't
"good programming practice", but I think it does this for reasons that
don't apply here: the greedy realloc logic specifically doesn't rely on
the returned extra size, beyond the fact that it is equal or larger than
what was requested.

(This commit was supposed to be a quick patch btw, but apparently we use
the greedy realloc stuff quite a bit across the codebase, so this ends
up touching *a*lot* of code.)

4 years agoalloc-util: add MALLOC_ELEMENTSOF() helper
Lennart Poettering [Tue, 18 May 2021 20:30:10 +0000 (22:30 +0200)] 
alloc-util: add MALLOC_ELEMENTSOF() helper

This is a wrapper around malloc_usable_size() but is typesafe, and
divides by the element size.

A test it is also added ensuring what it does it does correcly.

4 years agoalloc-util: introduce MALLOC_SIZEOF_SAFE() helper
Lennart Poettering [Tue, 18 May 2021 20:27:24 +0000 (22:27 +0200)] 
alloc-util: introduce MALLOC_SIZEOF_SAFE() helper

It's a wrapper around malloc_usable_size() that is supposed to be
compatible with _FORTIFY_SOURCES=1, by taking the
__builtin_object_size() data into account, the same way as the
_FORTIFY_SOURCES=1 logic does.

Fixes: #19203
4 years agoMerge pull request #19608 from keszybz/resolved-pahole
Lennart Poettering [Wed, 19 May 2021 14:35:16 +0000 (16:35 +0200)] 
Merge pull request #19608 from keszybz/resolved-pahole

Pahole optimization for resolved's DnsQuery

4 years agoMerge pull request #19163 from sipraga/online-if-required
Yu Watanabe [Wed, 19 May 2021 14:08:18 +0000 (23:08 +0900)] 
Merge pull request #19163 from sipraga/online-if-required

network: introduce an online state that respects RequiredForOnline=

4 years agoMerge pull request #19659 from keszybz/mkosi-naming-adjustment
Luca Boccassi [Wed, 19 May 2021 13:33:56 +0000 (14:33 +0100)] 
Merge pull request #19659 from keszybz/mkosi-naming-adjustment

Mkosi dependency naming adjustment

4 years agoalloc-util: use memcpy_safe() in memdup() or friends 19662/head
Yu Watanabe [Wed, 19 May 2021 12:21:28 +0000 (21:21 +0900)] 
alloc-util: use memcpy_safe() in memdup() or friends

4 years agomemory-util: make memcpy_safe() return pointer to destination
Yu Watanabe [Wed, 19 May 2021 12:20:49 +0000 (21:20 +0900)] 
memory-util: make memcpy_safe() return pointer to destination

4 years agoMerge pull request #19661 from keszybz/restore-liquid-compatibility
Frantisek Sumsal [Wed, 19 May 2021 11:58:35 +0000 (13:58 +0200)] 
Merge pull request #19661 from keszybz/restore-liquid-compatibility

Restore liquid compatibility

4 years agodocs: prettify two external links 19661/head
Zbigniew Jędrzejewski-Szmek [Wed, 19 May 2021 11:53:41 +0000 (13:53 +0200)] 
docs: prettify two external links

4 years agodocs: use {% raw %} to wrap jinja2 tags in documentation
Zbigniew Jędrzejewski-Szmek [Wed, 19 May 2021 11:22:25 +0000 (13:22 +0200)] 
docs: use {% raw %} to wrap jinja2 tags in documentation

As reported by @mrc0mmand:
> Since https://github.com/systemd/systemd/commit/89f52a780e54b2eb0905a6e613f6d4afcb22256b#diff-b842e6ab4a95a695d9449d106f091e6a134d9eac8d2aee1cd8b169fcb6b3a98bR109
> the GH pages fail to build, since they use the Liquid templating language,
> which coincidentally uses a very similar tags as jinja:
> https://shopify.github.io/liquid/tags/control-flow/
>
>> The tag elif on line 112 in HACKING.md is not a recognized Liquid tag.

4 years agotest: reintroduce m4 dependency for TEST-06-SELINUX
Frantisek Sumsal [Wed, 19 May 2021 08:49:56 +0000 (10:49 +0200)] 
test: reintroduce m4 dependency for TEST-06-SELINUX

m4 is required to build the test SELinux module:

```
[   31.321789] sh[483]: /bin/sh: line 1: m4: command not found
[   31.882668] sh[488]: Compiling targeted systemd_test module
[   32.120862] sh[492]: /bin/sh: line 1: m4: command not found
[   32.159897] sh[458]: make: *** [/usr/share/selinux/devel/include/Makefile:156: tmp/systemd_test.mod] Error 127
```

4 years agomkosi: stop pulling in vi 19659/head
Zbigniew Jędrzejewski-Szmek [Wed, 19 May 2021 08:53:32 +0000 (10:53 +0200)] 
mkosi: stop pulling in vi

We have 'nano' everywhere, and it's enough for a casual edit.

4 years agomkosi/fedora: use pkgconfig virtual provides to refer to packages
Zbigniew Jędrzejewski-Szmek [Wed, 19 May 2021 08:52:17 +0000 (10:52 +0200)] 
mkosi/fedora: use pkgconfig virtual provides to refer to packages

... and /usr/bin/ path for a library package which provides an executable we
care about (libxslt).

This way the mkosi dependency list corresponds directly to the names which are
used in the dependency() and find_program() lines in meson.build. It also makes
the thing more resilient to package splits and renames.

4 years agomkosi/fedora: drop python3-devel req
Zbigniew Jędrzejewski-Szmek [Wed, 19 May 2021 08:44:45 +0000 (10:44 +0200)] 
mkosi/fedora: drop python3-devel req

I think it was only used for building the python wrappers.

C.f. https://src.fedoraproject.org/rpms/systemd/c/ec9ca01d16bf6eda50b77f64dccf1caa06d29374?branch=rawhide.

4 years agonetwork: route: check validity of interface name in MultiPathRoute= 19603/head
Yu Watanabe [Thu, 13 May 2021 07:47:42 +0000 (16:47 +0900)] 
network: route: check validity of interface name in MultiPathRoute=

4 years agonetwork: route: parse earlier if device specifier in MultiPathRoute= is ifindex
Yu Watanabe [Fri, 14 May 2021 02:58:20 +0000 (11:58 +0900)] 
network: route: parse earlier if device specifier in MultiPathRoute= is ifindex

4 years agonetwork: introduce link_get_by_name()
Yu Watanabe [Fri, 14 May 2021 07:00:52 +0000 (16:00 +0900)] 
network: introduce link_get_by_name()