Commit Graph
100 Commits
Author SHA1 Message Date
Yu Watanabe d117687ab3 sd-bus: rename internal structs and enums
This renames e.g. struct bus_body_part -> BusMessageBodyPart to
follow our usual coding style. Also, several struct and enum
declarations are moved to relevant headers.
Also, this introduces bus-forward.h.
2025-05-28 09:52:28 +02:00
Yu Watanabe 4e36b79a84 cgroup-util: drop CGROUP_MASK_EXTEND_JOINED; move CGROUP_CPU_SHARES/BLKIO* to nspawn-oci (#37639) 2025-05-28 09:50:05 +09:00
Yu Watanabe 816a852324 core/exec-invoke: don't set $TMPDIR if sandboxing is disabled (#37637)
Follow-ups for #37271.
2025-05-28 09:46:06 +09:00
Yu Watanabe ff6f0a58c5 test-network: replace unnecessary assertRegex() with assertIn()
This fixes the following warning:
```
/tmp/systemd/test/test-network/systemd-networkd-tests.py:5107: SyntaxWarning: invalid escape sequence '\.'
  self.assertRegex(output, 'inet 10\.234\.77\.111/32.*dummy98')
```

Follow-up for 6479204e56.
2025-05-28 04:38:56 +09:00
Yu Watanabe b1bed07d84 test-network: add test case for issue #37629 2025-05-28 04:38:56 +09:00
Yu Watanabe 7dde00ca57 network/link: update state file when master ifindex is changed
If master ifindex is non-zero, then the carrier state and operational
state of the interface may be the enslaved state.
As the operational state is saved in link state file, and read by
wait-online, we need to update the state file when the master ifindex is
changed.
2025-05-28 04:38:56 +09:00
Yu Watanabe f44b20b7b6 network/link: ENODATA from reading IFLA_MASTER when an interface has no master
When an interface leaved from the master interface, then reading
IFLA_MASTER attribute causes ENODATA. When the interface was previously
enslaved to another interface, we need to remove reference to the
interface from the previous master interface.

This is especially important when
```
ip link set dev eth0 nomaster
```
is called.

Fixes a bug introduced by 0d411b7f8f (v249).
Fixes #37629.
2025-05-28 04:38:56 +09:00
Yu Watanabe ae6420c923 cgroup-util: minor cleanups (#37630) 2025-05-28 02:19:21 +09:00
Yu Watanabe b6278c1937 bpf-program: check if a trivial BPF program can be created and loaded
Re-introduce the check dropped by
ec3c5cfac7,
ad446c8ceb.

For some reasons, if we are running on LXC, even if bpf_program_supported()
returned true, but bpf_program_load_kernel() failed:
```
Attaching device control BPF program to cgroup /system.slice/test-bpf-devices-875b406d56ac7bc3.scope/186c411f6e991777 failed: Operation not permitted
src/test/test-bpf-devices.c:31: Assertion failed: Expected "r" to succeed, but got error: Operation not permitted
```
2025-05-27 17:24:33 +01:00
Yu Watanabe f67b2a06bf cgroup-util: drop handcrafted cg_is_empty(), always check cgroup.events populated field (#37624) 2025-05-27 10:41:56 +09:00
Yu Watanabe 5c606fb33e udevadm-info: update error messages (#37619) 2025-05-27 10:08:24 +09:00
Yu Watanabe 7b41cf7731 Two follow ups for #37591 (#37594) 2025-05-25 04:22:42 +09:00
Yu Watanabe 9b6bb9a43c Bugprone argument comment 7 (#37556)
Follow up from https://github.com/systemd/systemd/pull/37507
2025-05-25 01:53:13 +09:00
Yu Watanabe 9d75fb9647 linux: update kernel headers from v6.15-rc7 2025-05-24 03:04:22 +09:00
Yu Watanabe c2fcfda20f hwdb: merge entries for Ettus Research B200
Follow-up for 9dad00ef94.
2025-05-24 01:57:12 +09:00
Yu Watanabe 9a277f7106 hostname: two trivial cleanups (#37583) 2025-05-24 01:56:25 +09:00
Yu Watanabe 5b207b3cbf path-util: add flavour of path_startswith() that leaves a leading slash in place (#37572) 2025-05-24 00:20:40 +09:00
Yu Watanabe dda0e5aa95 hostname: use FOREACH_ARGUMENT() at one more place
Follow-up for 29a352e8c1.
2025-05-23 23:24:38 +09:00
Yu Watanabe 2af3cad0cd hostname: use proper type 2025-05-23 23:19:40 +09:00
Yu Watanabe 2c1cc93840 hostname: add hardware family, sku and version (#36956)
Add support for the hardware family, SKU (Stock-Keeping Unit) and
version. The values are read from the file /etc/machine-info or DMI as
fallback.

The entries are useful to provide an unified interface to collect detail
hardware information. The /etc/machine-info entries enable embedded
devices without UEFI support to provide the information via a common
interface.

Fixes: #31134
2025-05-23 23:17:01 +09:00
Yu Watanabe 2fbbf6c4c7 unit-def: reindent comments
Prompted by dfdeb0b1cb.
2025-05-22 05:15:08 +09:00
Yu Watanabe fe6a2c8a6c test-vpick: use more strict check
Follow-up for 4fc9940760.
2025-05-22 05:11:14 +09:00
Yu Watanabe 276ddd8a91 logind: state serialization fixes (#37555)
Turns out our escaping was really broken when saving/restoring
session/seat/user state. Let's fix that.
2025-05-22 03:54:40 +09:00
Yu Watanabe abe7cc5678 README: update badges 2025-05-22 01:37:05 +09:00
Yu Watanabe 8d9e00ea55 core/namespace: unapplicable -> inapplicable
Follow-up for dfdeb0b1cb.
2025-05-22 01:21:09 +09:00
Yu Watanabe ed13e7533b Various cleanups (#37531) 2025-05-21 23:43:19 +09:00
Yu Watanabe ef27ebab08 Clean up more includes (#37527)
Split out of #37344
2025-05-21 19:43:39 +09:00
Yu Watanabe c6a116b076 Bugprone argument comment 6 (#37507)
Follow up from https://github.com/systemd/systemd/pull/37481
2025-05-21 19:29:58 +09:00
Yu Watanabe caecff5fa2 meson: fix executable name in comment
Follow-up for e4b4a9b677.
2025-05-20 23:11:12 +09:00
Yu Watanabe d766c75acd units: kill only udev services and keep udev sockets on switching root
This also makes initrd-cleanup.service explicitly start
initrd-switch-root.service with replace-irreversibly mode, to avoid
systemd-udevd.service being triggered by kernel events and the start
job of initrd-switch-root.service being cancelled.

Follow-ups for 676fb42aae.
Addresses https://github.com/systemd/systemd/pull/37374#issuecomment-2875990471.
2025-05-17 12:47:52 +01:00
Yu Watanabe 7c087d802f Remove overzealous checks (#37493) 2025-05-17 01:37:18 +09:00
Yu Watanabe a31edb4e71 TEST-07-PID1: drop journal message flood test
This partially reverts f9b186c21a.

The test case is unstable, and fills debugging logs after journald
is restarted.
2025-05-16 22:24:54 +09:00
Yu Watanabe 8e958263d0 man/systemctl: fix typo
Follow-up for 652e4dd743.
2025-05-16 17:49:14 +09:00
Yu Watanabe ed3dce108d varlink: fix typo
Follow-up for 736349958e.
2025-05-16 17:47:54 +09:00
Yu Watanabe bfc8941098 journalctl: fix typo
Follow-up for d2f45c7681.
2025-05-16 17:46:20 +09:00
Yu Watanabe 9fd936df77 man: fix path to version.h
Follow-up for 30d20907bd.
2025-05-15 15:42:33 +02:00
Yu Watanabe abbdc33bca hwdb: add PLUTO SDR (#37471)
The goal of this PR is to replace the rules in
https://github.com/analogdevicesinc/plutosdr-fw/commit/76aa80a6d86f7b3b2c0fe83cca51f351991ee852.

The original rules file have some rules for a device that is now
deprecated and so, are not part of this change. AFAIU, 'plugdev' is also
a thing of the past and we now use 'uaccess' which should be given to
all ID_SOFTWARE_RADIO devices. So yeah, hopefully what I have here is
equivalent to the orginal .rules.

The request for this was done here:
https://github.com/analogdevicesinc/plutosdr-fw/issues/101
2025-05-15 20:19:09 +09:00
Yu Watanabe 6a4fe38f7f network: do not drop duplicated entries in loop
Fixes #37456.
2025-05-15 09:49:46 +02:00
Yu Watanabe 231557fe40 resolve: fix typo
Follow-up for 801ad6a6a9.
2025-05-15 07:19:24 +09:00
Yu Watanabe ff4814f60c validatefs: follow ups for recent change (#37447)
Follow-ups for #37434.
2025-05-15 04:25:28 +09:00
Yu Watanabe 1ef6cee327 Bugprone argument comment - round 4 (#37380)
Follow up from https://github.com/systemd/systemd/pull/37356
2025-05-15 03:36:16 +09:00
Yu Watanabe 561f53c92b Small fixups after review for stable (#37442) 2025-05-15 03:30:41 +09:00
Yu Watanabe 5472f6c78f Improve hwdb boilerplate texts (#37440) 2025-05-15 03:29:53 +09:00
Yu Watanabe f78e89b018 validatefs: split out validating gpt label and type
No functional change, just refactoring.
This addresses https://github.com/systemd/systemd/pull/37434#discussion_r2088950725.
2025-05-15 02:58:05 +09:00
Yu Watanabe e4db2c9b83 validatefs: drop unnecessary empty lines 2025-05-15 02:57:57 +09:00
Yu Watanabe e71ff6639c man: fix typo
Follow-up for 778cfac5fb.
Addresses https://github.com/systemd/systemd/pull/37434#discussion_r2088882005.
2025-05-15 02:56:30 +09:00
Yu Watanabe eba8cc8981 integration-tests: several cleanups (#37394) 2025-05-15 01:45:10 +09:00
Yu Watanabe e9ad95438d meson: fix path to coverage.h
Follow-up for 30d20907bd.
2025-05-14 02:28:27 +09:00
Yu Watanabe 18609909d9 TEST-73-LOCALE: skip lv keymap and friends
The following failure should be in libxkbcommon and/or sanitizer.
There is nothing we can do here. Let's skip it.

```
TEST-73-LOCALE.sh[3733]: + assert_rc 0 localectl set-keymap lv
TEST-73-LOCALE.sh[6699]: + set +ex
TEST-73-LOCALE.sh[6700]: Failed to set keymap: Remote peer disconnected
TEST-73-LOCALE.sh[6703]: FAIL: expected: '0' actual: '1'
TEST-73-LOCALE.sh[157]: + rm -f /etc/dbus-1/system.d/systemd-localed-read-only.conf
[FAILED] Failed to start TEST-73-LOCALE.service - TEST-73-LOCALE.
```
```
==3719==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x7fa51f161000 at pc 0x7fa521250be4 bp 0x7ffe49130a80 sp 0x7ffe49130240
READ of size 19126 at 0x7fa51f161000 thread T0
    #0 0x7fa521250be3 in strndup (/usr/lib/clang/20/lib/x86_64-redhat-linux-gnu/libclang_rt.asan.so+0x50be3) (BuildId: aa6231e817f72469c44a6c6cee9f0694a87db7fb)
    #1 0x7fa51f128325  (/lib64/libxkbcommon.so.0+0x1c325) (BuildId: 72e8cb985db37963272d140f7b2aee551c465ff5)
    #2 0x7fa51f121952  (/lib64/libxkbcommon.so.0+0x15952) (BuildId: 72e8cb985db37963272d140f7b2aee551c465ff5)
    #3 0x7fa51f123d3a  (/lib64/libxkbcommon.so.0+0x17d3a) (BuildId: 72e8cb985db37963272d140f7b2aee551c465ff5)
    #4 0x7fa51f117c86  (/lib64/libxkbcommon.so.0+0xbc86) (BuildId: 72e8cb985db37963272d140f7b2aee551c465ff5)
    #5 0x7fa51f12548f  (/lib64/libxkbcommon.so.0+0x1948f) (BuildId: 72e8cb985db37963272d140f7b2aee551c465ff5)
    #6 0x7fa51f125c9e  (/lib64/libxkbcommon.so.0+0x19c9e) (BuildId: 72e8cb985db37963272d140f7b2aee551c465ff5)
    #7 0x7fa51f126a59  (/lib64/libxkbcommon.so.0+0x1aa59) (BuildId: 72e8cb985db37963272d140f7b2aee551c465ff5)
    #8 0x7fa51f12cec6  (/lib64/libxkbcommon.so.0+0x20ec6) (BuildId: 72e8cb985db37963272d140f7b2aee551c465ff5)
    #9 0x7fa51f12e3c2  (/lib64/libxkbcommon.so.0+0x223c2) (BuildId: 72e8cb985db37963272d140f7b2aee551c465ff5)
    #10 0x7fa51f12a4e5 in xkb_keymap_new_from_names (/lib64/libxkbcommon.so.0+0x1e4e5) (BuildId: 72e8cb985db37963272d140f7b2aee551c465ff5)
    #11 0x5574dd63f864 in verify_xkb_rmlvo /usr/src/debug/systemd/src/locale/xkbcommon-util.c:69:14
(snip)
```
2025-05-14 02:28:27 +09:00
Yu Watanabe 7ded7cfb7f TEST-73-LOCALE: drop unnecessary workaround
It should be fixed by 157d5b5c30.
2025-05-14 02:28:27 +09:00
Yu Watanabe 71078275e8 integration-tests: adjust priorities
When running with sanitizers:
```
26/95 systemd:integration-tests / TEST-21-DFUZZER                          OK 1517.75s
40/95 systemd:integration-tests / TEST-85-NETWORK-NetworkdDHCPClientTests  OK  779.18s
42/95 systemd:integration-tests / TEST-04-JOURNAL                          OK  716.17s
```
and without sanitizers:
```
44/95 systemd:integration-tests / TEST-85-NETWORK-NetworkdDHCPClientTests  OK  730.33s
29/95 systemd:integration-tests / TEST-64-UDEV-STORAGE-simultaneous_events OK  701.49s
40/95 systemd:integration-tests / TEST-04-JOURNAL                          OK  348.05s
```

So, let's set higher priorities only on these tests.
2025-05-14 02:28:27 +09:00
Yu Watanabe 48a092afbb github/mkosi: tentatively disable mkosi(opensuse) job
There is a package dependency issue in opensuse, and there is nothing we
can do. Let's reenable later when the issue is fixed.
2025-05-14 02:28:27 +09:00
Yu Watanabe 59dd650501 TEST-21-DFUZZER: skip test when no sanitizer is enabled 2025-05-14 02:28:22 +09:00
Yu Watanabe 5884fafcd7 systemctl: make systemctl clean --what= values more discoverable (#37418) 2025-05-14 02:16:47 +09:00
Yu Watanabe 003c6faff4 acl-util: make acl_find_uid() static 2025-05-14 02:06:02 +09:00
Yu Watanabe 1abb592f2f udev: move devnoce_acl() to udev-builtin-uaccess.c
As it is now only used by udev-builtin-uaccess.c.

This also makes devnode_acl() use fd rather than path to device node.
2025-05-14 02:06:02 +09:00
Yu Watanabe c960ca2be1 login,udev: avoid race between systemd-logind and systemd-udevd in setting ACLs
Previously, both udevd and logind modifies ACLs of a device node. Hence,
there exists a race something like the following:
1. udevd reads an old state file,
2. logind updates the state file, and apply new ACLs,
3. udevd applies ACLs based on the old state file.

This makes logind not update ACLs but trigger uevents for relevant
devices to make ACLs updated by udevd.
2025-05-14 02:06:02 +09:00
Yu Watanabe 26a675dd56 login: do not call manager_process_seat_device() more than once per event
When udevd broadcasts an event for e.g. a graphics device with master-of-seat
tag, then previously manager_process_seat_device() was called twice for
the event.

With this commit, the function is called only once even for an event for
such device.
2025-05-14 02:06:02 +09:00
Yu Watanabe 3400abf3ca login: use FOREACH_STRING() at one more place 2025-05-14 02:06:02 +09:00
Yu Watanabe 2012d6d74e device-util: introduce device_get_seat() helper function 2025-05-14 02:06:02 +09:00
Yu Watanabe ab1bd9daed device-util: introduce several more helper functions
This also makes device_in_subsystem() and device_is_devtype() return
negative error on critical error
2025-05-14 02:06:02 +09:00
Yu Watanabe b7d60b2966 backlight: replace recursion with for loop 2025-05-14 02:06:02 +09:00
Yu Watanabe 25151ca2b8 backlight: use device_get_sysattr_unsigned() at one more place 2025-05-14 02:06:02 +09:00
Yu Watanabe f51c6da8a7 hwdb: add bladeRF SDR devices (#37413) 2025-05-13 23:44:29 +09:00
Yu Watanabe 87ddd97057 core: assorted cleanups (#37410) 2025-05-13 08:32:20 +09:00
Yu Watanabe 262dee132b meson: Various improvements (#37395) 2025-05-12 23:06:57 +09:00
Yu Watanabe 6ea555f913 core/namespace: fix issue in PrivateTmp=disconnected vs var.mount (#37271)
Fixes #37258.
Replaces #37259.
2025-05-12 23:05:24 +09:00
Yu Watanabe fdb4d869f0 udev: sort received events by their seqnum (#37314)
The kernel sometimes sends uevents in a random order, so previously the
received events were not sorted by their seqnum. We determine which
event is ready for processing by using the assumption that queued events
are sorted by their seqnum. Let's sort the received events before queue
them, to make events processed in a correct ordering.
2025-05-12 23:04:49 +09:00
Yu Watanabe 8ac5b047fc man/systemd.exec: update documents for PrivateTmp= 2025-05-11 03:33:02 +09:00
Yu Watanabe 3e320dc608 test-execute: add test case for PrivateTmp=disconnected 2025-05-11 03:33:02 +09:00
Yu WatanabeandMike Yuan 6156bec7a4 core: disable mounting disconnected private tmpfs on /var/tmp/ when DefaultDependencies=no
If DefaultDependencies=no, /var/ may not be mounted yet when the service
is being started. Previously, In such case, if the service has
PrivateTmp=disconnected, the service manager created /var/tmp/ on the
root filesystem and mounted the disconnected private tmpfs there. That
poluted the root filesystem and disturbed gpt-auto-generator on next
boot, as /var/ would not be empty anymore. See issue #37258.

This changes PrivateTmp=disconnected as the following:
- If DefaultDependencies=no and RootDirectory=/RootImage= are not set,
  then a private tmpfs is mounted _only_ on /tmp/, and set $TMPDIR=/tmp
  environment variable to suggest the service to use /tmp/.
- If DefaultDependencies=yes and RootDirectory=/RootImage= are not set,
  then implies RequiresMountsFor=/var/, though that is typically
  redundant, but anyway. Hence, we can safely mount /var/tmp/.
- Otherwise, i.e. when one of RootDirectory=/RootImage= is set, behaves
  as the same as the previous, as the private root filesystem for the
  service is explicitly prepared by the service manager, and we can
  safely mount a private tmpfs on /var/tmp/ without any extra
  dependencies.

Fixes #37258.

Co-authored-by: Mike Yuan <me@yhndnzj.com>
2025-05-11 03:33:02 +09:00
Yu Watanabe 26186503d7 core/mount: drop unnecessary dependency generations
When the unit is new, then mount_setup_new_unit() adds the unit to the
load queue, and the same dependencies will be anyway added.

When the unit already exists but previously failed to be loaded, then
mount_setup_existing_unit() also adds the unit to the load queue.
Hence it is not necessary to regenerate dependencies here now.

So, we need to regenerate dependencies only when things changed and
the unit has been already loaded.

No functional changes, just optimization.
2025-05-11 03:33:02 +09:00
Yu Watanabe fee2f5ca3f core/mount,swap: reload unit when manually mounted/started and we previously failed to load
Otherwise, neither unit_patch_contexts() nor unit_add_exec_dependencies()
is called for the unit.
2025-05-11 03:32:48 +09:00
Yu Watanabe 13208591db core/namespace: split out append_private_tmp() 2025-05-11 03:29:20 +09:00
Yu Watanabe 97bf617af1 core/namespace: introduce should_propagate_to_submounts() helper function 2025-05-11 03:29:20 +09:00
Yu Watanabe a4b1232dbf core/unit: suffix directory paths with slash 2025-05-11 03:29:20 +09:00
Yu Watanabe d7b217f2a9 mount-tool: honor arg_canonicalize for ACTION_UMOUNT path_is_absolute() check too (#37398)
Split out from #36337
2025-05-10 03:22:20 +09:00
Yu Watanabe ef12eadfc8 core/bpf: drop old kernels support (#37151) 2025-05-10 03:13:42 +09:00
Yu Watanabe 6a04c1e518 udev: sort queued events by their seqnum
Unfortunately, the kernel may send events in a random order:
```
[   25.769624] systemd-udevd[194]: sdi7: Device is queued (SEQNUM=2843, ACTION=add)
[   25.769893] systemd-udevd[194]: sda5: Device is queued (SEQNUM=2842, ACTION=add)
[   25.770517] systemd-udevd[194]: sdi8: Device is queued (SEQNUM=2844, ACTION=add)
```
As you can see, udevd receives the event with SEQNUM=2843 earlier than
one with SEQNUM=2842.

Let's make queued events sorted, as our logic of determining which event
is ready for being processed assumes that queued events are sorted.
See event_build_dependencies().

Also, refuse to queue an event if another event with the same seqnum is
already queued.
2025-05-10 02:44:54 +09:00
Yu Watanabe e8f017c421 udev: drop event_is_blocked()
As now it is a trivial wrapper of event_build_dependencies().
2025-05-10 02:41:29 +09:00
Yu Watanabe f8b1d4fdfb udev: refactoring for managing events for locked block devices
Previously, when an event for block device is queued or an inotify event
for a block device is triggered, all queued events were checked by
event_queue_assume_block_device_unlocked(), and its cost may be huge
on early boot stage.

This makes locked events are managed in separated prioq and hashmap,
to reduce the cost of event_queue_assume_block_device_unlocked(),
which is now renamed to manager_requeue_locked_events_by_device().

This also changes the clockid of timer events for requeueing and
timeout of retry from CLOCK_BOOTTIME to CLOCK_MONOTONIC. Otherwise,
if the system suspend while an event is locked, the event may be
requeued immediately after come back from the suspend and timed out.
2025-05-10 02:41:10 +09:00
Yu Watanabe b112a676d5 udev: several cleanups for managing events (#37384)
Mostly no functional changes, just refactoring.
2025-05-10 02:30:25 +09:00
Yu Watanabe dcd2ad2314 udev: move error handling in event_requeue() to caller
Also, remove udev database on failure.
2025-05-10 00:26:32 +09:00
Yu Watanabe f694a527ac udev: split out device_broadcast_on_error() 2025-05-10 00:26:32 +09:00
Yu Watanabe e969ec1d51 sd-device: rename arguments
To make it consistent with its declaration and other function
prototypes.
2025-05-10 00:26:32 +09:00
Yu Watanabe dc231d66ac udev: move timeout event sources from struct Event to struct Worker
The timeout event sources are enabled only when the event is being
processed by a worker, hence they are not necessary to be owned by the
event.

No effective functional change, just refactoring.
2025-05-10 00:26:32 +09:00
Yu Watanabe e1ae931064 udev: list up all dependencies of an event when the first time it is examined
No functional change, just refactoring.
2025-05-10 00:26:32 +09:00
Yu Watanabe 0cde671c29 udev: check earlier if there is a free room for processing an event 2025-05-10 00:26:32 +09:00
Yu Watanabe 4478546649 udev: cache last queued event entry
When we have N queued events, LIST_APPEND() takes O(N).
Let's cache the last event to optimize queueing.
2025-05-10 00:26:32 +09:00
Yu Watanabe e962ebbe72 udev: introduce event_freep() and use it as cleanup attribute
No functional change, just refactoring and preparation for later change.
2025-05-10 00:26:32 +09:00
Yu Watanabe 7ded1bcf04 test: allow to allocate test scope even running with unprivileged user 2025-05-10 00:17:52 +09:00
Yu Watanabe ad446c8ceb core/bpf-devices: use bpf_program_supported()
Note, BPF_PROG_TYPE_CGROUP_DEVICE is supported since kernel v4.15.
As our baseline on the kernel is v5.4, we can assume the bpf type is
always supported.
2025-05-10 00:17:52 +09:00
Yu Watanabe ec3c5cfac7 core/bpf-firewall: replace bpf_firewall_supported() with bpf_program_supported()
Note, BPF_PROG_TYPE_CGROUP_SKB is supported since kernel v4.10, and
BPF_F_ALLOW_MULTI and program name is supported since kernel v4.15.
As our baseline on the kernel is v5.4, we can assume that the type,
flag, and naming is supported when bpf_program_supported() succeeds.
2025-05-10 00:17:52 +09:00
Yu Watanabe 22e2f06428 core/cgroup: foreign bpf programs needs to pass bpf_program_supported()
As CONFIG_CGROUP_BPF may be disabled on the kernel or we are running on
sanitizers. See comments in bpf_program_supported().

Follow-up for 3fcb98cbff.
2025-05-10 00:17:52 +09:00
Yu Watanabe 71be1f3875 bpf-program: introduce bpf_program_supported() helper function
It checks if the kernel is built with CONFIG_CGROUP_BPF.
It is currently unused, but will be used later.
2025-05-10 00:17:52 +09:00
Yu Watanabe df80d728be bpf-compat: drop unused compat_libbpf_probe_bpf_prog_type() 2025-05-10 00:17:52 +09:00
Yu Watanabe fb9991962d core/bpf: drop unnecessary check for probing program type
BPF_PROG_TYPE_CGROUP_SKB is supported since kernel v4.10
(0e33661de493db325435d565a4a722120ae4cbf3) and
BPF_PROG_TYPE_CGROUP_SOCK_ADDR is supported since kernel v4.17
(4fbac77d2d092b475dda9eea66da674369665427).

Our baseline on the kernel is v5.4. The check is not necessary.
2025-05-10 00:17:52 +09:00
Yu Watanabe 4d2b9abbe1 core: replace cgroup_bpf_supported() with dlopen_bpf_full()
After 3988e2489a, the function is a simple
wrapper of bpf_dlopen() with logging. Let's introduce dlopen_bpf_full()
that takes log level, and replace cgroup_bpf_supported() with it.
2025-05-10 00:17:52 +09:00
Yu Watanabe e06e34a3b6 udev: replace get_user/group_creds() with userdb/groupdb_by_name() (#37304)
This also makes networkd not refuse User=/Group=root.
2025-05-09 20:54:16 +09:00
Yu Watanabe 37c8a03ebf udevadm-info: parse all arguments before doing anything (#37292) 2025-05-09 14:09:45 +09:00