1
0
mirror of https://github.com/systemd/systemd synced 2025-09-23 13:54:45 +02:00

Compare commits

...

40 Commits

Author SHA1 Message Date
Lennart Poettering
85a725a942 pcrextend: add documentation for varlink api 2025-09-17 15:42:57 +02:00
Lennart Poettering
6413ccc625 sd-boot: rename "path" field to "directory"
"path" sounds like a fully qualified complete string referencing some
terminal object. But here it's not like that, the field just stores the
directory the object we actually care about is placed in. Hence let's
change this field to be named "directory", to be less confusing for
readers.
2025-09-17 15:40:05 +02:00
Zbigniew Jędrzejewski-Szmek
5510a98fda
systemd-sysext: introduce a global config (#38250)
This PR implements what is proposed in
https://github.com/systemd/systemd/issues/37992.

Having a global config file that supports the same cmdline options for
sysext/confext allows the user to customize the behavior of
systemd-sysext.service unit too, without the need of hacking the service
manually.

The global config will live in
`CONF_PATHS_STRV()/systemd/{sysext/confext}.conf` and it will be
overridden by cmdline, so it is possible to customize a run if
`systemd-sysext` is executed manually.

For now support `--mutable=` (`Mutable`) and `--image-policy=`
(`ImagePolicy`).
2025-09-17 15:13:11 +02:00
gvenugo3
df6ccb0496 core: Add wall clock duration to CPU usage logging
Enhance CPU time logging to include wall clock duration alongside
CPU consumption. When a unit transitions to inactive/failed state,
the log message now shows both CPU time consumed and the total wall
clock time since activation.

Changes:
- Calculate wall clock duration using active_enter_timestamp
- Update log format: "Consumed Xs CPU time over Ys wall clock time"
- Fallback to original format if no activation timestamp available
- Use monotonic clock for accurate duration calculation

This addresses issue #35738 by providing administrators better context
about service performance and resource efficiency.

Example output:
- With wall clock: "service: Consumed 30s CPU time over 5min wall clock time"
- Without timestamp: "service: Consumed 30s CPU time"
2025-09-17 15:07:11 +02:00
Ryan Brue
d7c7af28fb doc: document /run/host/root/ as an optional bind mount for the host fs
Container managers may want to bind mount the root filesystem
somewhere within the container. Security-wise, this is very much not
recommended, but it may be something application containers may want
to do nonetheless.

Ref: https://github.com/flatpak/flatpak/pull/6125#issuecomment-2759378603
2025-09-17 13:55:44 +01:00
Luca Boccassi
72bf86663c dissect: use blkid_probe filters to restrict probing to supported FSes and no raid
We only support a subset of filesystems, and no RAID, for DDIs. blkid spends a lot
of time trying to probe for the filesystem type, so cut it short by using
the filtering options to restrict it to the filesystems we support, and to
exclude raid probing.
2025-09-17 14:46:24 +02:00
Zbigniew Jędrzejewski-Szmek
413a1c51c4
fd-util: several cleanups for close_all_fds() (#38878) 2025-09-17 14:43:04 +02:00
Zbigniew Jędrzejewski-Szmek
af373bbcb9 pam_systemd: fix error logs
The code was of two minds about error_id: it was used directly in
pam_syslog_errno(), but in the next line checked with streq_ptr().
sd_varlink_callbo() may return negative and then it does not set the output
params, or it returns the error in ret_error_id. We cannot assume that error_id
is non-null. Also fix a select-and-paste mistake in one place.
2025-09-17 14:40:16 +02:00
Zbigniew Jędrzejewski-Szmek
75924efd5a sd-device: improve and downgrade error message
I'm seeing this in the initrd (with the dev_ksmg_record line added to clarify
where the error is coming from):
[    6.114232] systemd-journald[251]: dev_kmsg_record: kernel_device=+pci:0000:00:02.2
[    6.116842] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/class/pci/0000:00:02.2".
[    6.134115] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/firmware/pci/0000:00:02.2".
[    6.139427] systemd-journald[251]: dev_kmsg_record: kernel_device=+pci:0000:00:02.3
[    6.144327] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/class/pci/0000:00:02.3".
[    6.149442] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/firmware/pci/0000:00:02.3".
[    6.155091] systemd-journald[251]: dev_kmsg_record: kernel_device=+pci:0000:00:02.3
[    6.160118] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/class/pci/0000:00:02.3".
[    6.164814] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/firmware/pci/0000:00:02.3".
[    6.169201] systemd-journald[251]: dev_kmsg_record: kernel_device=+pci:0000:00:02.3
[    6.173990] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/class/pci/0000:00:02.3".
[    6.183104] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/firmware/pci/0000:00:02.3".
[    6.187746] systemd-journald[251]: dev_kmsg_record: kernel_device=+pci:0000:00:02.3
[    6.192825] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/class/pci/0000:00:02.3".
[    6.197733] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/firmware/pci/0000:00:02.3".
[    6.203015] systemd-journald[251]: dev_kmsg_record: kernel_device=+pci:0000:00:02.3
[    6.207184] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/class/pci/0000:00:02.3".
[    6.211943] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/firmware/pci/0000:00:02.3".
[    6.216703] systemd-journald[251]: dev_kmsg_record: kernel_device=+pci:0000:00:02.4
[    6.221944] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/class/pci/0000:00:02.4".
[    6.226803] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/firmware/pci/0000:00:02.4".
[    6.231238] systemd-journald[251]: dev_kmsg_record: kernel_device=+pci:0000:00:02.4
[    6.236078] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/class/pci/0000:00:02.4".
[    6.241845] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/firmware/pci/0000:00:02.4".
[    6.247976] systemd-journald[251]: dev_kmsg_record: kernel_device=+pci:0000:00:02.4
[    6.252545] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/class/pci/0000:00:02.4".
[    6.256146] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/firmware/pci/0000:00:02.4".
[    6.260651] systemd-journald[251]: dev_kmsg_record: kernel_device=+pci:0000:00:02.4
[    6.265151] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/class/pci/0000:00:02.4".
[    6.269755] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/firmware/pci/0000:00:02.4".
[    6.276206] systemd-journald[251]: dev_kmsg_record: kernel_device=+pci:0000:00:02.4
[    6.280034] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/class/pci/0000:00:02.4".
[    6.284603] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/firmware/pci/0000:00:02.4".
[    6.288710] systemd-journald[251]: dev_kmsg_record: kernel_device=+pci:0000:00:02.5
[    6.293312] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/class/pci/0000:00:02.5".
[    6.297763] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/firmware/pci/0000:00:02.5".
[    6.302438] systemd-journald[251]: dev_kmsg_record: kernel_device=+pci:0000:00:02.5
[    6.306948] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/class/pci/0000:00:02.5".
[    6.310797] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/firmware/pci/0000:00:02.5".
[    6.315097] systemd-journald[251]: dev_kmsg_record: kernel_device=+pci:0000:00:02.5
[    6.319033] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/class/pci/0000:00:02.5".
[    6.323593] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/firmware/pci/0000:00:02.5".
[    6.328834] systemd-journald[251]: dev_kmsg_record: kernel_device=+pci:0000:00:02.5
[    6.333057] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/class/pci/0000:00:02.5".
[    6.337644] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/firmware/pci/0000:00:02.5".
[    6.341152] systemd-journald[251]: dev_kmsg_record: kernel_device=+pci:0000:00:02.5
[    6.345436] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/class/pci/0000:00:02.5".
[    6.349824] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/firmware/pci/0000:00:02.5".
[    6.354306] systemd-journald[251]: dev_kmsg_record: kernel_device=+pci:0000:00:02.6
[    6.358131] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/class/pci/0000:00:02.6".
[    6.366568] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/firmware/pci/0000:00:02.6".
[    6.371139] systemd-journald[251]: dev_kmsg_record: kernel_device=+pci:0000:00:02.6
[    6.375207] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/class/pci/0000:00:02.6".
[    6.378681] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/firmware/pci/0000:00:02.6".
[    6.382820] systemd-journald[251]: dev_kmsg_record: kernel_device=+pci:0000:00:02.6
[    6.387143] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/class/pci/0000:00:02.6".
[    6.392192] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/firmware/pci/0000:00:02.6".
[    6.397109] systemd-journald[251]: dev_kmsg_record: kernel_device=+pci:0000:00:02.6
[    6.400991] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/class/pci/0000:00:02.6".
[    6.405992] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/firmware/pci/0000:00:02.6".
[    6.410889] systemd-journald[251]: dev_kmsg_record: kernel_device=+pci:0000:00:02.6
[    6.414730] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/class/pci/0000:00:02.6".
[    6.418266] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/firmware/pci/0000:00:02.6".
[    6.422575] systemd-journald[251]: dev_kmsg_record: kernel_device=+pci:0000:00:02.7
[    6.429942] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/class/pci/0000:00:02.7".
[    6.433780] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/firmware/pci/0000:00:02.7".
[    6.438509] systemd-journald[251]: dev_kmsg_record: kernel_device=+pci:0000:00:02.7
[    6.442293] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/class/pci/0000:00:02.7".
[    6.447236] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/firmware/pci/0000:00:02.7".
[    6.453336] systemd-journald[251]: dev_kmsg_record: kernel_device=+pci:0000:00:02.7
[    6.458031] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/class/pci/0000:00:02.7".
[    6.461948] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/firmware/pci/0000:00:02.7".
[    6.465883] systemd-journald[251]: dev_kmsg_record: kernel_device=+pci:0000:00:02.7
[    6.470072] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/class/pci/0000:00:02.7".
[    6.476196] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/firmware/pci/0000:00:02.7".
[    6.481182] systemd-journald[251]: dev_kmsg_record: kernel_device=+pci:0000:00:02.7
[    6.484938] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/class/pci/0000:00:02.7".
[    6.491322] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/firmware/pci/0000:00:02.7".
[    6.497289] systemd-journald[251]: dev_kmsg_record: kernel_device=+pci:0000:00:03.0
[    6.501935] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/class/pci/0000:00:03.0".
[    6.505217] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/firmware/pci/0000:00:03.0".
[    6.509819] systemd-journald[251]: dev_kmsg_record: kernel_device=+pci:0000:00:03.0
[    6.516078] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/class/pci/0000:00:03.0".
[    6.520942] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/firmware/pci/0000:00:03.0".
[    6.525178] systemd-journald[251]: dev_kmsg_record: kernel_device=+pci:0000:00:03.0
[    6.528505] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/class/pci/0000:00:03.0".
[    6.534669] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/firmware/pci/0000:00:03.0".
[    6.539353] systemd-journald[251]: dev_kmsg_record: kernel_device=+pci:0000:00:03.0
[    6.543035] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/class/pci/0000:00:03.0".
[    6.547441] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/firmware/pci/0000:00:03.0".
[    6.553211] systemd-journald[251]: dev_kmsg_record: kernel_device=+pci:0000:00:03.0
[    6.557452] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/class/pci/0000:00:03.0".
[    6.562468] systemd-journald[251]: sd-device: Failed to chase symlinks in "/sys/firmware/pci/0000:00:03.0".
[    6.566955] systemd-journald[251]: dev_kmsg_record: kernel_device=+pci:0000:00:03.1
[    6.570846] systemd-journald[251]: Too many messages being logged to kmsg, ignoring

The error message was misleading, since it sounds like there's an issue with
symlinks, but the device simply doesn't exist. But I think we should suppress
the message altogether. journald spewing messages like this fills up the logs
for no benefit. The sd_device_new* functions can legitimately be used for
"invalid" devices, e.g. to check if they even exist. We have no idea for what
purpose the caller is creating the device object, so let's not log this at all.
The caller can log if appropriate.
2025-09-17 14:39:59 +02:00
Anton Tiurin
505deaff01 networkctl: list drop unused dbus connection
Do not acquire dbus connection as it is unused in list_links
2025-09-17 14:39:34 +02:00
Zbigniew Jędrzejewski-Szmek
eb514a4bbf
Two logging fixups (#38794) 2025-09-17 14:38:40 +02:00
Luca Boccassi
1e765ed0eb core: drop dead code
Variable is not used anymore
2025-09-17 14:38:04 +02:00
Yu Watanabe
9ec1b3e075 core/bpf-foreign: use RET_GATHER() 2025-09-17 14:37:20 +02:00
Yu Watanabe
bed2723caa bootctl: drop unnecessary verb_unlink()
It is a trivial wrapper for verb_list(). Let's directly use verb_list()
and drop verb_unlink().

Follow-up for 8702496bfb0205764569782a9a2ebd11fd80e5e8.
2025-09-17 14:35:45 +02:00
Lennart Poettering
aa7574417b pull: fix SHA256SUMS fallback for file:// URLs
For file:// there's no http error code 404, but there's
CURLE_FILE_COULDNT_READ_FILE hence call ->on_not_found() in that case
too.

Follow-up for: c456862f87237831ce2bbaeb53a37d1b3d669285
2025-09-17 14:35:10 +02:00
Luca Boccassi
ab0ffca130 repart: do not fail when CopyBlocks= is used in the initrd
When running in the initrd --root= is automatically set to /sysroot or /sysusr
but then using CopyBlocks fails due to a security measure:

root@particle-caba-1e47:~# systemd-repart --dry-run=no /dev/vda
No machine ID set, using randomized partition UUIDs.
Automatic discovery of backing block devices not permitted in --root= mode, refusing.

Follow-up for 5c08da586fc8fe7cda4010e0057cb79ba1d74335
2025-09-17 14:23:54 +02:00
Zbigniew Jędrzejewski-Szmek
28021f6e88
Some post unmerged-usr cleanups (#38696)
I noticed in our NixOS packaging that we were working around the fact
that core/swap.c looks for swapon and swapoff in /sbin

Lets make it configurable just like all the other util-linux binaries
through meson and make it default to /usr/sbin/{swapon,swapoff}

This way mounts work on a systemd without the /sbin -> /usr/sbin
compatibility symlink. (And as a side-effect has NixOS be able to have
it in /nix/store too like the other util-linux tools).

Given that `unmerged-usr` support was dropped in 255 I think this is a
safe change?
2025-09-17 14:22:05 +02:00
Yu Watanabe
eb654a769d boot: add assertions
To silence coverity.

Closes CID#1620098.
2025-09-17 14:18:54 +02:00
Zbigniew Jędrzejewski-Szmek
08d8224c0a
fd-util: fix path_is_root_at() when dealing with detached mounts (#38636)
path_is_root_at() is supposed to detect if the inode referenced by the
specified fd is the "root inode". For that it checks if the inode and
its parent are the same inode and the same mount. Traditionally this
check was correct. But these days we actually have detached mounts (i.e.
those returned by fsmount() and related calls), whose root inode also
behaves like that.

Our uses for path_is_root_at() use the function to detect if an absolute
path would be identical to a relative path based on the specified fd
(sepifically: chaseat()), which goes really wrong if used on a detached
mount.

hence, let's adjust the function a bit, and let's go by path to "/" to
check if the referenced inode is the actual root inode in our chroot.
2025-09-17 14:14:58 +02:00
Alan Brady
113ef23264 nspawn: add NamespacePath support for nspawn files
Commit d7bea6b6 ("nspawn: introduce an option for specifying network
namespace path") already did most of the work here enabling a command
line option for specifying the namespace path for a given container.
Someone even took care of the merging code in merge_settings as though
this already worked. All that's then needed is to add a line to the
nspawn-gperf.gperf file to actually enable being able to specify
NamespacePath from nspawn files as well.

This greatly simplifies how we configure nspawn containers by being able
to give all the options we need in .nspawn files instead of needing to
also use command line parameters.

Closes: #27188
2025-09-17 14:14:02 +02:00
Luca Boccassi
09f655ad4a sysext: do not attempt to unlock images interactively
These images are not using a passphrase, they are using keys
or at most TPM-based sealing (not yet implemented, for contexts).

Do not use the interactive helper, as it will block and ask the
user for a password if it fails to find the signing cert, which
is not useful for this tool.

Fixes https://github.com/systemd/systemd/issues/33179
2025-09-17 14:07:30 +02:00
Luca Boccassi
a179823379 meson: bump version to 259~devel for next cycle 2025-09-17 13:06:07 +01:00
Luca Boccassi
781d9d0789 Finalize NEWS and meson.version for v258 2025-09-17 13:00:39 +01:00
Luca Boccassi
6833cdfa04
Chores for release (#38958) 2025-09-17 12:58:15 +01:00
Luca Boccassi
128096c422 NEWS: update time and place 2025-09-17 12:10:06 +02:00
Luca Boccassi
ff50e47aa1 NEWS: update contributors list
ninja -C build git-contrib

[zjs: deduplicate Daan]
2025-09-17 12:09:49 +02:00
Zbigniew Jędrzejewski-Szmek
803e3a8557 mailmap: deduplicate Daan 2025-09-17 12:08:03 +02:00
Luca Boccassi
01caeddbe3 Update syscall numbers
ninja -C build update-syscall-tables update-syscall-header
2025-09-17 09:48:00 +01:00
Luca Boccassi
106bdd888b hwdb: update
ninja -C build update-hwdb
2025-09-17 09:41:25 +01:00
Yu Watanabe
f9f8a35264 fd-util: use heap only when nwea() does not work
Then, we can avoid malloc in most cases.
2025-09-10 19:20:50 +09:00
Yu Watanabe
93d037dbd0 fd-util: split out fallback logic for close_all_fds()
No functional change. Just refactoring.

With this change, we can test each logic directly without seccomp
or hiding procfs.
2025-09-10 19:20:50 +09:00
Zbigniew Jędrzejewski-Szmek
66b2d758c5 various: add a fixed name to log about plugin execution
Function execute_directories logged in a way that was meaningless
without additional context:
  systemd[1]: No executables found.
In execute_strv this was partially rectified by extracting the directory
name from one of the directories and using this as the identifier. But
the directory name is not always meaningful, and can also be set from
an environment variable. Let's simplify things by providing a fixed name
that can be used consistently in all log messages. In particular this will
make error messages easier to understand if users report just the error
without additional context.
2025-09-03 08:56:23 +02:00
Zbigniew Jędrzejewski-Szmek
f2d3472131 core: remove duplicate logging about mountpoints
Early boot log:
Sep 01 12:06:03 fedora systemd[1]: Mounting tmpfs to /dev/shm of type tmpfs with options mode=01777,usrquota.
Sep 01 12:06:03 fedora systemd[1]: Mounting tmpfs (tmpfs) on /dev/shm (MS_NOSUID|MS_NODEV|MS_STRICTATIME "mode=01777,usrquota")...
Sep 01 12:06:03 fedora systemd[1]: Mounting devpts to /dev/pts of type devpts with options mode=0600,gid=5.
Sep 01 12:06:03 fedora systemd[1]: Mounting devpts (devpts) on /dev/pts (MS_NOSUID|MS_NOEXEC "mode=0600,gid=5")...
Sep 01 12:06:03 fedora systemd[1]: Mounting tmpfs to /run of type tmpfs with options mode=0755,size=20%,nr_inodes=800k.
Sep 01 12:06:03 fedora systemd[1]: Mounting tmpfs (tmpfs) on /run (MS_NOSUID|MS_NODEV|MS_STRICTATIME "mode=0755,size=20%,nr_inodes=800k")...
Sep 01 12:06:03 fedora systemd[1]: Mounting cgroup2 to /sys/fs/cgroup of type cgroup2 with options nsdelegate,memory_recursiveprot.
Sep 01 12:06:03 fedora systemd[1]: Mounting cgroup2 (cgroup2) on /sys/fs/cgroup (MS_NOSUID|MS_NODEV|MS_NOEXEC "nsdelegate,memory_recursiveprot")...
Sep 01 12:06:03 fedora systemd[1]: Mounting pstore to /sys/fs/pstore of type pstore with options ''.
Sep 01 12:06:03 fedora systemd[1]: Mounting pstore (pstore) on /sys/fs/pstore (MS_NOSUID|MS_NODEV|MS_NOEXEC "")...
Sep 01 12:06:03 fedora systemd[1]: Mounting efivarfs to /sys/firmware/efi/efivars of type efivarfs with options ''.
Sep 01 12:06:03 fedora systemd[1]: Mounting efivarfs (efivarfs) on /sys/firmware/efi/efivars (MS_NOSUID|MS_NODEV|MS_NOEXEC "")...
Sep 01 12:06:03 fedora systemd[1]: Mounting bpf to /sys/fs/bpf of type bpf with options mode=0700.
Sep 01 12:06:03 fedora systemd[1]: Mounting bpf (bpf) on /sys/fs/bpf (MS_NOSUID|MS_NODEV|MS_NOEXEC "mode=0700")...

We logged and then called mount_verbose_full() immediately after, resulting in
duplicate logging. The second line is more informative than the first one, so
kill the first one.
2025-09-03 08:56:21 +02:00
Arian van Putten
fa7e3a96e4 units/*getty*: use /usr/sbin/agetty
Same way that we do it for quotaon and debug-shell by
going through meson
2025-08-24 14:01:21 +02:00
Arian van Putten
ef8517f024 core/swap: /sbin -> /usr/sbin
I noticed in our NixOS packaging that we were working around the fact
that core/swap.c looks for swapon and swapoff in /sbin

Lets make it configurable just like all the other util-linux binaries
through meson and make it default to /usr/sbin/{swapon,swapoff}

This way mounts work on a systemd without the /sbin -> /usr/sbin
compatibility symlink.  (And as a side-effect has NixOS be able
to have it in /nix/store too like the other util-linux tools).
2025-08-24 13:59:22 +02:00
Yu Watanabe
d486ae5adf test: add test cases for path_is_root_at()
Prompted by PR #29842 and issue #29559.
2025-08-19 22:48:08 +09:00
Lennart Poettering
e1f3d790f3 fd-util: fix path_is_root_at() when dealing with detached mounts
path_is_root_at() is supposed to detect if the inode referenced by the
specified fd is the "root inode". For that it checks if the inode and
its parent are the same inode and the same mount. Traditionally this
check was correct. But these days we actually have detached mounts (i.e.
those returned by fsmount() and related calls), whose root inode also
behaves like that.

Our uses for path_is_root_at() use the function to detect if an absolute
path would be identical to a relative path based on the specified fd
(specifically: chaseat()), which goes really wrong if used on a detached
mount.

hence, let's adjust the function a bit, and let's go by path to "/" to
check if the referenced inode is the actual root inode in our chroot.
2025-08-19 22:47:18 +09:00
Emanuele Giuseppe Esposito
887d0f8e93 sysext: support ImagePolicy global config option
Just as Mutable=, support ImagePolicy in systemd/{sysext/confext}.conf and
dropins in systemd/{sysext.confext}.conf.d/* configs.
2025-07-29 05:34:51 -04:00
Emanuele Giuseppe Esposito
afbf09350b man/sysext.conf: add systemd-sysext config files
Add sysext.conf, which similar to other configs like coredump, will be
searched in:
/{etc run usr/lib}/systemd/{sysext/confext}.conf
but also
/{etc run usr/lib}/systemd/{sysext/confext}.conf.d/*

This config is an alternative to command line options, especially useful
if we want to extend the service units without modifying them.
2025-07-29 05:34:50 -04:00
Emanuele Giuseppe Esposito
eea5745f9e sysext: introduce global config file
Introduce systemd/{sysext/confext}.conf and systemd/{sysext/confext}.conf.d to provide an
alternative way of setting the cmdline options in systemd-sysext.

The config file has to have a [Sysext] or [Confext] option respectively,
which will be overridden by the cmdline.

As an example of supported config, add Mutable= option.
2025-07-29 05:34:50 -04:00
75 changed files with 2415 additions and 888 deletions

View File

@ -24,6 +24,7 @@ Chen Qi <Qi.Chen@windriver.com> <40684930+ChenQi1989@users.noreply.github.com>
Christophe Varoqui <christophe.varoqui@free.fr>
Colin Guthrie <ColinGuthrie@web>
Cristian Rodríguez <cristian@rodriguez.im> <crodriguez@owncloud.com>
Daan De Meyer <daan.j.demeyer@gmail.com>
Daniel Elstner <daniel.kitta@gmail.com> <danielk@openismus.com>
Daniel Gorbea <danielgorbea@hotmail.com>
Daniel J Walsh <dwalsh@redhat.com>

37
NEWS
View File

@ -1,6 +1,6 @@
systemd System and Service Manager
CHANGES WITH 258 in spe:
CHANGES WITH 258:
Incompatible changes:
@ -1530,15 +1530,15 @@ CHANGES WITH 258 in spe:
Américo Monteiro, Andika Triwidada, AndreFerreiraMsc,
Andreas Henriksson, Andreas Schneider, Andreas Stührk, Andres Beltran,
Andrew Sayers, Andrii Chubatiuk, André Monteiro, Andy Shevchenko,
Ani Sinha, Anthony Avina, Anthony Messina, Anton Ryzhov,
Ani Sinha, Anthony Avina, Anthony Messina, Anton Ryzhov, Anton Tiurin,
Antonio Alvarez Feijoo, Arian van Putten, Arkadiusz Bokowy, Arnaudv6,
AsciiWolf, Avram Dorfman, Bastien Nocera, Beniamino Galvani,
Brett Holman, Busayo Dada, ButterflyOfFire, Carlo Teubner, Chris Grant,
Chris Hofstaedtler, Chris Mayo, Christian Glombek, Christian Hesse,
Christopher Head, Colin Foster, Cosima Neidahl, Craig McLure,
Daan De Meyer, DaanDeMeyer, Dai MIKURUBE, Dan McGregor, Dan Streetman,
Daan De Meyer, Dai MIKURUBE, Dan McGregor, Dan Streetman,
Daniel Foster, Daniel Rusek, Daniil, David C. Manuelda, David Härdeman,
David Rheinsberg, David Tardon, Debarshi Ray, Deli Zhang,
David Rheinsberg, David Tardon, DeKoile, Debarshi Ray, Deli Zhang,
Devilish Spirits, Dimitri John Ledkov, Duncan Overbruck, Dusty Mabe,
Eaterminer, Eisuke Kawashima, Emilio Sepulveda, Emir SARI,
Emmanuel Ferdman, Enrico Tagliavini, Erik Larsson, Erin Shepherd,
@ -1559,16 +1559,17 @@ CHANGES WITH 258 in spe:
Lorenzo Arena, Louis Sautier, LuK1337, Luca Boccassi,
Lucas Adriano Salles, Luke Yeager, Lukáš Nykrýn, Luna Jernberg,
Léane GRASSER, Marco Trevisan (Treviño), Marcos Alano,
Mario Limonciello, Markus Kurz, Martin Hundebøll, Martin Srebotnjak,
Martin Wilck, Mate Kukri, Matteo Croce, Matthew Schwartz,
Matthias Gerstner, Matthias Lisin, Matthieu Baerts (NGI0),
Matthieu LAURENT, MaxHearnden, Michael Catanzaro, Michael Ferrari,
Michael Limiero, Michael Olbrich, Michal Koutný, Michal Sekletár,
Michał Moczulski, Mike Yuan, Miroslav Lichvar, Morten Hauke Solvang,
Mario Limonciello, Markus Kurz, Martin Homuth-Rosemann,
Martin Hundebøll, Martin Srebotnjak, Martin Wilck, Mate Kukri,
Matteo Croce, Matthew Schwartz, Matthias Gerstner, Matthias Lisin,
Matthieu Baerts (NGI0), Matthieu LAURENT, MaxHearnden,
Michael Catanzaro, Michael Ferrari, Michael Limiero, Michael Olbrich,
Michal Koutný, Michal Sekletár, Michał Moczulski, Mike Yuan,
Miroslav Lichvar, Morten Hauke Solvang,
Muhammad Nuzaihan Bin Kamal Luddin, Myrrh Periwinkle, Nathan,
NetSysFire, Nick Labich, Nick Owens, Nick Rosbrook, Nils K,
Noel Georgi, Nuno Sá, Oliver Schramm, Paul Fertser, Pavithra Barithaya,
Philip Freeman, Philip Withnall, Piotr Drąg, Pontus Lundkvist,
Philip Freeman, Philip Withnall, Piotr Drąg, Pontus Lundkvist, Raura,
Ricky Tigg, RocketDev, Ronan Pigott, Rostislav Lastochkin,
Rudi Heitbaum, Ryan Blue, Ryan Thompson, Ryan Wilson, Salim B,
Salvatore Cocuzza, Sam James, Sam Leonard, Samuel Dionne-Riel,
@ -1582,15 +1583,15 @@ CHANGES WITH 258 in spe:
Vishal Chillara Srinivas, Vishwanath Chandapur, Vitaly Kuznetsov,
Volodymyr Shkriabets, Vyacheslav Yurkov, Werner Sembach, Y T,
Yaping Li, Yu Watanabe, ZIHCO, Zbigniew Jędrzejewski-Szmek,
andrejpodzimek, anonymix007, cvlc12, damnkiwi6120, davjav, fishears,
hanjinpeng, haxibami, herbrechtsmeier, honjow, hsu zangmen, igo95862,
jane400, jinyaoguo, joo es, kanitha chim, keentux, kmeaw, luc-salles,
madroach, maia x., msizanoen, naly zzwd, nkraetzschmar, nl6720,
novenary, peelz, persmule, richfifeg, ssoss, tim tom, tuxmainy,
andrejpodzimek, anonymix007, anthisfan, cvlc12, damnkiwi6120, davjav,
fishears, hanjinpeng, haxibami, herbrechtsmeier, honjow, hsu zangmen,
igo95862, jane400, jinyaoguo, joo es, kanitha chim, keentux, kmeaw,
luc-salles, madroach, maia x., msizanoen, naly zzwd, nkraetzschmar,
nl6720, novenary, peelz, persmule, richfifeg, ssoss, tim tom, tuxmainy,
tytan652, val4oss, ver4a, victor-ok, vlefebvre, wrvsrx, wtmpx,
xinpeng wang, z z, Дамјан Георгиевски, 铝箔, 김인수
xinpeng wang, z z, Дамјан Георгиевски, наб, 铝箔, 김인수
— Edinburgh, 2025/09/05
— Edinburgh, 2025/09/17
CHANGES WITH 257:

1
TODO
View File

@ -245,7 +245,6 @@ Features:
- io.systemd.Hostname
- io.systemd.ManagedOOM
- io.systemd.Network
- io.systemd.PCRExtend
- io.systemd.PCRLock
- io.systemd.Resolve.Monitor
- io.systemd.Resolve

View File

@ -301,6 +301,12 @@ care should be taken to avoid naming conflicts. `systemd` (and in particular
may be used in combination with `/run/host/userdb/` above: one defines the
user record, the other contains the user's home directory.
12. The `/run/host/root/` directory may be used to bind mount the host root
filesystem. Binding the host's root filesystem into the container is a
major security hole: any container manager that maintains a security
boundary should not use this; however, if having the root filesystem in
the container is desired, this is a good place to mount it to.
## What You Shouldn't Do
1. Do not drop `CAP_MKNOD` from the container. `PrivateDevices=` is a commonly

File diff suppressed because it is too large Load Diff

View File

@ -396,6 +396,9 @@ acpi:UBLX*:
acpi:UBOO*:
ID_VENDOR_FROM_DATABASE=Das U-Boot
acpi:ULRV*:
ID_VENDOR_FROM_DATABASE=UltraRISC Technology (Shanghai) Co., Ltd
acpi:VAIO*:
ID_VENDOR_FROM_DATABASE=VAIO Corporation

View File

@ -1,5 +1,5 @@
--- 20-acpi-vendor.hwdb.base 2025-09-05 09:10:01.771007528 +0200
+++ 20-acpi-vendor.hwdb 2025-09-05 09:10:01.786007236 +0200
--- 20-acpi-vendor.hwdb.base 2025-09-17 09:39:11.942879943 +0100
+++ 20-acpi-vendor.hwdb 2025-09-17 09:39:11.950880802 +0100
@@ -3,6 +3,8 @@
# Data imported from:
# https://uefi.org/uefi-pnp-export
@ -19,7 +19,7 @@
acpi:AMDI*:
ID_VENDOR_FROM_DATABASE=AMD
@@ -424,6 +423,9 @@
@@ -427,6 +426,9 @@
acpi:AAA*:
ID_VENDOR_FROM_DATABASE=Avolites Ltd
@ -29,7 +29,7 @@
acpi:AAE*:
ID_VENDOR_FROM_DATABASE=Anatek Electronics Inc.
@@ -451,6 +453,9 @@
@@ -454,6 +456,9 @@
acpi:ABO*:
ID_VENDOR_FROM_DATABASE=D-Link Systems Inc
@ -39,7 +39,7 @@
acpi:ABS*:
ID_VENDOR_FROM_DATABASE=Abaco Systems, Inc.
@@ -496,7 +501,7 @@
@@ -499,7 +504,7 @@
acpi:ACO*:
ID_VENDOR_FROM_DATABASE=Allion Computer Inc.
@ -48,7 +48,7 @@
ID_VENDOR_FROM_DATABASE=Aspen Tech Inc
acpi:ACR*:
@@ -775,6 +780,9 @@
@@ -778,6 +783,9 @@
acpi:AMT*:
ID_VENDOR_FROM_DATABASE=AMT International Industry
@ -58,7 +58,7 @@
acpi:AMX*:
ID_VENDOR_FROM_DATABASE=AMX LLC
@@ -823,6 +831,9 @@
@@ -826,6 +834,9 @@
acpi:AOA*:
ID_VENDOR_FROM_DATABASE=AOpen Inc.
@ -68,7 +68,7 @@
acpi:AOE*:
ID_VENDOR_FROM_DATABASE=Advanced Optics Electronics, Inc.
@@ -832,6 +843,9 @@
@@ -835,6 +846,9 @@
acpi:AOT*:
ID_VENDOR_FROM_DATABASE=Alcatel
@ -78,7 +78,7 @@
acpi:APC*:
ID_VENDOR_FROM_DATABASE=American Power Conversion
@@ -1013,7 +1027,7 @@
@@ -1016,7 +1030,7 @@
ID_VENDOR_FROM_DATABASE=ALPS ALPINE CO., LTD.
acpi:AUO*:
@ -87,7 +87,7 @@
acpi:AUR*:
ID_VENDOR_FROM_DATABASE=Aureal Semiconductor
@@ -1093,6 +1107,9 @@
@@ -1096,6 +1110,9 @@
acpi:AXE*:
ID_VENDOR_FROM_DATABASE=Axell Corporation
@ -97,7 +97,7 @@
acpi:AXI*:
ID_VENDOR_FROM_DATABASE=American Magnetics
@@ -1252,6 +1269,9 @@
@@ -1255,6 +1272,9 @@
acpi:BML*:
ID_VENDOR_FROM_DATABASE=BIOMED Lab
@ -107,7 +107,7 @@
acpi:BMS*:
ID_VENDOR_FROM_DATABASE=BIOMEDISYS
@@ -1264,6 +1284,9 @@
@@ -1267,6 +1287,9 @@
acpi:BNO*:
ID_VENDOR_FROM_DATABASE=Bang & Olufsen
@ -117,7 +117,7 @@
acpi:BNS*:
ID_VENDOR_FROM_DATABASE=Boulder Nonlinear Systems
@@ -1510,6 +1533,9 @@
@@ -1513,6 +1536,9 @@
acpi:CHA*:
ID_VENDOR_FROM_DATABASE=Chase Research PLC
@ -127,7 +127,7 @@
acpi:CHD*:
ID_VENDOR_FROM_DATABASE=ChangHong Electric Co.,Ltd
@@ -1675,6 +1701,9 @@
@@ -1678,6 +1704,9 @@
acpi:COD*:
ID_VENDOR_FROM_DATABASE=CODAN Pty. Ltd.
@ -137,7 +137,7 @@
acpi:COI*:
ID_VENDOR_FROM_DATABASE=Codec Inc.
@@ -2093,7 +2122,7 @@
@@ -2096,7 +2125,7 @@
ID_VENDOR_FROM_DATABASE=Dragon Information Technology
acpi:DJE*:
@ -146,7 +146,7 @@
acpi:DJP*:
ID_VENDOR_FROM_DATABASE=Maygay Machines, Ltd
@@ -2446,6 +2475,9 @@
@@ -2449,6 +2478,9 @@
acpi:EIN*:
ID_VENDOR_FROM_DATABASE=Elegant Invention
@ -156,7 +156,7 @@
acpi:EKA*:
ID_VENDOR_FROM_DATABASE=MagTek Inc.
@@ -2716,6 +2748,9 @@
@@ -2719,6 +2751,9 @@
acpi:FCG*:
ID_VENDOR_FROM_DATABASE=First International Computer Ltd
@ -166,7 +166,7 @@
acpi:FCS*:
ID_VENDOR_FROM_DATABASE=Focus Enhancements, Inc.
@@ -3092,7 +3127,7 @@
@@ -3095,7 +3130,7 @@
ID_VENDOR_FROM_DATABASE=General Standards Corporation
acpi:GSM*:
@ -175,7 +175,7 @@
acpi:GSN*:
ID_VENDOR_FROM_DATABASE=Grandstream Networks, Inc.
@@ -3202,6 +3237,9 @@
@@ -3205,6 +3240,9 @@
acpi:HEC*:
ID_VENDOR_FROM_DATABASE=Hisense Electric Co., Ltd.
@ -185,7 +185,7 @@
acpi:HEL*:
ID_VENDOR_FROM_DATABASE=Hitachi Micro Systems Europe Ltd
@@ -3337,6 +3375,9 @@
@@ -3340,6 +3378,9 @@
acpi:HSD*:
ID_VENDOR_FROM_DATABASE=HannStar Display Corp
@ -195,7 +195,7 @@
acpi:HSM*:
ID_VENDOR_FROM_DATABASE=AT&T Microelectronics
@@ -3463,6 +3504,9 @@
@@ -3466,6 +3507,9 @@
acpi:ICI*:
ID_VENDOR_FROM_DATABASE=Infotek Communication Inc
@ -205,7 +205,7 @@
acpi:ICM*:
ID_VENDOR_FROM_DATABASE=Intracom SA
@@ -3559,6 +3603,9 @@
@@ -3562,6 +3606,9 @@
acpi:IKE*:
ID_VENDOR_FROM_DATABASE=Ikegami Tsushinki Co. Ltd.
@ -215,7 +215,7 @@
acpi:IKS*:
ID_VENDOR_FROM_DATABASE=Ikos Systems Inc
@@ -3607,6 +3654,9 @@
@@ -3610,6 +3657,9 @@
acpi:IMX*:
ID_VENDOR_FROM_DATABASE=arpara Technology Co., Ltd.
@ -225,7 +225,7 @@
acpi:INA*:
ID_VENDOR_FROM_DATABASE=Inventec Corporation
@@ -4135,6 +4185,9 @@
@@ -4138,6 +4188,9 @@
acpi:LAN*:
ID_VENDOR_FROM_DATABASE=Sodeman Lancom Inc
@ -235,7 +235,7 @@
acpi:LAS*:
ID_VENDOR_FROM_DATABASE=LASAT Comm. A/S
@@ -4186,6 +4239,9 @@
@@ -4189,6 +4242,9 @@
acpi:LED*:
ID_VENDOR_FROM_DATABASE=Long Engineering Design Inc
@ -245,7 +245,7 @@
acpi:LEG*:
ID_VENDOR_FROM_DATABASE=Legerity, Inc
@@ -4204,6 +4260,9 @@
@@ -4207,6 +4263,9 @@
acpi:LGD*:
ID_VENDOR_FROM_DATABASE=LG Display
@ -255,7 +255,7 @@
acpi:LGI*:
ID_VENDOR_FROM_DATABASE=Logitech Inc
@@ -4270,6 +4329,9 @@
@@ -4273,6 +4332,9 @@
acpi:LND*:
ID_VENDOR_FROM_DATABASE=Land Computer Company Ltd
@ -265,7 +265,7 @@
acpi:LNK*:
ID_VENDOR_FROM_DATABASE=Link Tech Inc
@@ -4304,7 +4366,7 @@
@@ -4307,7 +4369,7 @@
ID_VENDOR_FROM_DATABASE=Design Technology
acpi:LPL*:
@ -274,7 +274,7 @@
acpi:LSC*:
ID_VENDOR_FROM_DATABASE=LifeSize Communications
@@ -4480,6 +4542,9 @@
@@ -4483,6 +4545,9 @@
acpi:MCX*:
ID_VENDOR_FROM_DATABASE=Millson Custom Solutions Inc.
@ -284,7 +284,7 @@
acpi:MDA*:
ID_VENDOR_FROM_DATABASE=Media4 Inc
@@ -4726,6 +4791,9 @@
@@ -4729,6 +4794,9 @@
acpi:MOM*:
ID_VENDOR_FROM_DATABASE=Momentum Data Systems
@ -294,7 +294,7 @@
acpi:MOS*:
ID_VENDOR_FROM_DATABASE=Moses Corporation
@@ -4966,6 +5034,9 @@
@@ -4969,6 +5037,9 @@
acpi:NAL*:
ID_VENDOR_FROM_DATABASE=Network Alchemy
@ -304,7 +304,7 @@
acpi:NAT*:
ID_VENDOR_FROM_DATABASE=NaturalPoint Inc.
@@ -5506,6 +5577,9 @@
@@ -5509,6 +5580,9 @@
acpi:PCX*:
ID_VENDOR_FROM_DATABASE=PC Xperten
@ -314,7 +314,7 @@
acpi:PDM*:
ID_VENDOR_FROM_DATABASE=Psion Dacom Plc.
@@ -5569,9 +5643,6 @@
@@ -5572,9 +5646,6 @@
acpi:PHE*:
ID_VENDOR_FROM_DATABASE=Philips Medical Systems Boeblingen GmbH
@ -324,7 +324,7 @@
acpi:PHL*:
ID_VENDOR_FROM_DATABASE=Philips Consumer Electronics Company
@@ -5662,9 +5733,6 @@
@@ -5665,9 +5736,6 @@
acpi:PNL*:
ID_VENDOR_FROM_DATABASE=Panelview, Inc.
@ -334,7 +334,7 @@
acpi:PNR*:
ID_VENDOR_FROM_DATABASE=Planar Systems, Inc.
@@ -6142,9 +6210,6 @@
@@ -6145,9 +6213,6 @@
acpi:RTI*:
ID_VENDOR_FROM_DATABASE=Rancho Tech Inc
@ -344,7 +344,7 @@
acpi:RTL*:
ID_VENDOR_FROM_DATABASE=Realtek Semiconductor Company Ltd
@@ -6319,9 +6384,6 @@
@@ -6322,9 +6387,6 @@
acpi:SEE*:
ID_VENDOR_FROM_DATABASE=SeeColor Corporation
@ -354,7 +354,7 @@
acpi:SEI*:
ID_VENDOR_FROM_DATABASE=Seitz & Associates Inc
@@ -6805,6 +6867,9 @@
@@ -6808,6 +6870,9 @@
acpi:SVD*:
ID_VENDOR_FROM_DATABASE=SVD Computer
@ -364,7 +364,7 @@
acpi:SVI*:
ID_VENDOR_FROM_DATABASE=Sun Microsystems
@@ -6889,6 +6954,9 @@
@@ -6892,6 +6957,9 @@
acpi:SZM*:
ID_VENDOR_FROM_DATABASE=Shenzhen MTC Co., Ltd
@ -374,7 +374,7 @@
acpi:TAA*:
ID_VENDOR_FROM_DATABASE=Tandberg
@@ -6979,6 +7047,9 @@
@@ -6982,6 +7050,9 @@
acpi:TDG*:
ID_VENDOR_FROM_DATABASE=Six15 Technologies
@ -384,7 +384,7 @@
acpi:TDM*:
ID_VENDOR_FROM_DATABASE=Tandem Computer Europe Inc
@@ -7021,6 +7092,9 @@
@@ -7024,6 +7095,9 @@
acpi:TEV*:
ID_VENDOR_FROM_DATABASE=Televés, S.A.
@ -394,7 +394,7 @@
acpi:TEZ*:
ID_VENDOR_FROM_DATABASE=Tech Source Inc.
@@ -7150,9 +7224,6 @@
@@ -7153,9 +7227,6 @@
acpi:TNC*:
ID_VENDOR_FROM_DATABASE=TNC Industrial Company Ltd
@ -404,7 +404,7 @@
acpi:TNM*:
ID_VENDOR_FROM_DATABASE=TECNIMAGEN SA
@@ -7465,14 +7536,14 @@
@@ -7468,14 +7539,14 @@
acpi:UNC*:
ID_VENDOR_FROM_DATABASE=Unisys Corporation
@ -425,7 +425,7 @@
acpi:UNI*:
ID_VENDOR_FROM_DATABASE=Uniform Industry Corp.
@@ -7507,6 +7578,9 @@
@@ -7510,6 +7581,9 @@
acpi:USA*:
ID_VENDOR_FROM_DATABASE=Utimaco Safeware AG
@ -435,7 +435,7 @@
acpi:USD*:
ID_VENDOR_FROM_DATABASE=U.S. Digital Corporation
@@ -7768,9 +7842,6 @@
@@ -7771,9 +7845,6 @@
acpi:WAL*:
ID_VENDOR_FROM_DATABASE=Wave Access
@ -445,7 +445,7 @@
acpi:WAV*:
ID_VENDOR_FROM_DATABASE=Wavephore
@@ -7898,7 +7969,7 @@
@@ -7901,7 +7972,7 @@
ID_VENDOR_FROM_DATABASE=WyreStorm Technologies LLC
acpi:WYS*:
@ -454,7 +454,7 @@
acpi:WYT*:
ID_VENDOR_FROM_DATABASE=Wooyoung Image & Information Co.,Ltd.
@@ -7912,9 +7983,6 @@
@@ -7915,9 +7986,6 @@
acpi:XDM*:
ID_VENDOR_FROM_DATABASE=XDM Ltd.
@ -464,7 +464,7 @@
acpi:XES*:
ID_VENDOR_FROM_DATABASE=Extreme Engineering Solutions, Inc.
@@ -7948,9 +8016,6 @@
@@ -7951,9 +8019,6 @@
acpi:XNT*:
ID_VENDOR_FROM_DATABASE=XN Technologies, Inc.
@ -474,7 +474,7 @@
acpi:XQU*:
ID_VENDOR_FROM_DATABASE=SHANGHAI SVA-DAV ELECTRONICS CO., LTD
@@ -8017,6 +8082,9 @@
@@ -8020,6 +8085,9 @@
acpi:ZBX*:
ID_VENDOR_FROM_DATABASE=Zebax Technologies

View File

@ -40403,9 +40403,15 @@ usb:v0B0Dp0000*
usb:v0B0E*
ID_VENDOR_FROM_DATABASE=GN Netcom
usb:v0B0Ep0301*
ID_MODEL_FROM_DATABASE=Jabra EVOLVE 20
usb:v0B0Ep0305*
ID_MODEL_FROM_DATABASE=Jabra EVOLVE Link MS
usb:v0B0Ep030C*
ID_MODEL_FROM_DATABASE=Jabra EVOLVE 65
usb:v0B0Ep0311*
ID_MODEL_FROM_DATABASE=Jabra EVOLVE 65
@ -40460,6 +40466,21 @@ usb:v0B0Ep2456*
usb:v0B0Ep245E*
ID_MODEL_FROM_DATABASE=Jabra Link 370
usb:v0B0Ep248A*
ID_MODEL_FROM_DATABASE=Jabra Elite 85h
usb:v0B0Ep24B8*
ID_MODEL_FROM_DATABASE=Jabra Evolve2 65
usb:v0B0Ep24BB*
ID_MODEL_FROM_DATABASE=Jabra Evolve2 85
usb:v0B0Ep24C9*
ID_MODEL_FROM_DATABASE=Jabra Link 380
usb:v0B0Ep24CA*
ID_MODEL_FROM_DATABASE=Jabra Link 380
usb:v0B0Ep620C*
ID_MODEL_FROM_DATABASE=Jabra BT620s

View File

@ -137,4 +137,5 @@ IDEMIA,IDEM,06/26/2018
"JUMPtec GmbH",JUMP,04/22/2025
"Fsas Technologies Inc.",FSAS,04/30/2025
"JP Morgan Chase N.A.",JPMC,05/30/2025
"Roku, Inc.",ROKU,07/15/2025
"Roku, Inc.",ROKU,07/15/2025
"UltraRISC Technology (Shanghai) Co., Ltd",ULRV,09/15/2025
1 Company ACPI ID Approved On Date
137 JUMPtec GmbH JUMP 04/22/2025
138 Fsas Technologies Inc. FSAS 04/30/2025
139 JP Morgan Chase N.A. JPMC 05/30/2025
140 Roku, Inc. ROKU 07/15/2025
141 UltraRISC Technology (Shanghai) Co., Ltd ULRV 09/15/2025

View File

@ -203,12 +203,6 @@ DCD160 (base 16) Tianjin Changdatong Technology Co.,LTD
Shenzhen Guangdong 518040
CN
00-0E-72 (hex) Arca Technologies S.r.l.
000E72 (base 16) Arca Technologies S.r.l.
via Statale 17
Bollengo Torino 10012
IT
E0-C2-B7 (hex) Masimo Corporation
E0C2B7 (base 16) Masimo Corporation
52 Discovery
@ -45800,12 +45794,6 @@ DCD83B (base 16) Cisco Systems, Inc
Tallinn Harju maakond 15551
EE
A0-F7-C3 (hex) FICOSA ELECTRONICS SLU
A0F7C3 (base 16) FICOSA ELECTRONICS SLU
Pol. Ind. Can Mitjans,Vial San Jordi s/n
Viladecavalls Barcelona 08232
ES
EC-46-84 (hex) Microsoft Corporation
EC4684 (base 16) Microsoft Corporation
One Microsoft Way
@ -45836,6 +45824,120 @@ C86C9A (base 16) SNUC System
Round Rock TX 78681
US
00-0E-72 (hex) Sesami Technologies Srl
000E72 (base 16) Sesami Technologies Srl
via Statale 17
Bollengo Torino 10012
IT
44-39-AA (hex) G.Tech Technology Ltd.
4439AA (base 16) G.Tech Technology Ltd.
No.8,Jinyuan 1st Road,Tangjiawan Town, High-tech Zone
Zhuhai Guangdong 519085
CN
58-27-45 (hex) Angelbird Technologies GmbH
582745 (base 16) Angelbird Technologies GmbH
Steinebach 18
Dornbirn Vorarlberg 6850
AT
98-2C-C6 (hex) SERNET (SUZHOU) TECHNOLOGIES CORPORATION
982CC6 (base 16) SERNET (SUZHOU) TECHNOLOGIES CORPORATION
NO.8 Tangzhuang Road,Suzhou Industrial Park,Su ZhouCity,JiangSu Province,China
Suzhou 215021
CN
30-F6-5D (hex) Hewlett Packard Enterprise
30F65D (base 16) Hewlett Packard Enterprise
6280 America Center Dr
San Jose CA 95002
US
F0-3E-05 (hex) Murata Manufacturing Co., Ltd.
F03E05 (base 16) Murata Manufacturing Co., Ltd.
1-10-1, Higashikotari
Nagaokakyo-shi Kyoto 617-8555
JP
64-FA-2B (hex) Sagemcom Broadband SAS
64FA2B (base 16) Sagemcom Broadband SAS
250, route de l'Empereur
Rueil Malmaison Cedex hauts de seine 92848
FR
B0-A6-04 (hex) Espressif Inc.
B0A604 (base 16) Espressif Inc.
Room 204, Building 2, 690 Bibo Rd, Pudong New Area
Shanghai Shanghai 201203
CN
C0-2E-DF (hex) AltoBeam Inc.
C02EDF (base 16) AltoBeam Inc.
B808, Tsinghua Tongfang Hi-Tech Plaza, Haidian
Beijing Beijing 100083
CN
70-3E-76 (hex) Arcadyan Corporation
703E76 (base 16) Arcadyan Corporation
No.8, Sec.2, Guangfu Rd.
Hsinchu City Hsinchu 30071
TW
20-46-3A (hex) Apple, Inc.
20463A (base 16) Apple, Inc.
1 Infinite Loop
Cupertino CA 95014
US
04-72-EF (hex) Apple, Inc.
0472EF (base 16) Apple, Inc.
1 Infinite Loop
Cupertino CA 95014
US
D4-FF-1A (hex) Apple, Inc.
D4FF1A (base 16) Apple, Inc.
1 Infinite Loop
Cupertino CA 95014
US
10-7D-C8 (hex) Apple, Inc.
107DC8 (base 16) Apple, Inc.
1 Infinite Loop
Cupertino CA 95014
US
C4-5B-AC (hex) Apple, Inc.
C45BAC (base 16) Apple, Inc.
1 Infinite Loop
Cupertino CA 95014
US
F4-B5-99 (hex) Apple, Inc.
F4B599 (base 16) Apple, Inc.
1 Infinite Loop
Cupertino CA 95014
US
24-6D-10 (hex) Apple, Inc.
246D10 (base 16) Apple, Inc.
1 Infinite Loop
Cupertino CA 95014
US
A0-F7-C3 (hex) Ficosa Automotive SLU
A0F7C3 (base 16) Ficosa Automotive SLU
Pol. Ind. Can Mitjans,Vial San Jordi s/n
Viladecavalls Barcelona 08232
ES
B8-FB-B3 (hex) TP-Link Systems Inc.
B8FBB3 (base 16) TP-Link Systems Inc.
10 Mauchly
Irvine CA 92618
US
00-01-30 (hex) Extreme Networks Headquarters
000130 (base 16) Extreme Networks Headquarters
2121 RDU Center Drive
@ -90941,12 +91043,6 @@ EC97E0 (base 16) Hangzhou Ezviz Software Co.,Ltd.
Sunnyvale CA 94089
US
A4-F0-0F (hex) Espressif Inc.
A4F00F (base 16) Espressif Inc.
Room 204, Building 2, 690 Bibo Rd, Pudong New Area
Shanghai Shanghai 201203
CN
EC-96-BF (hex) Kontron eSystems GmbH
EC96BF (base 16) Kontron eSystems GmbH
Bahnhofstraße 100
@ -90965,6 +91061,117 @@ F09258 (base 16) China Electronics Cloud Computing Technology Co., Ltd
Wuhan Hubei 430090
CN
A4-F0-0F (hex) Espressif Inc.
A4F00F (base 16) Espressif Inc.
Room 204, Building 2, 690 Bibo Rd, Pudong New Area
Shanghai Shanghai 201203
CN
2C-8D-48 (hex) Smart Innovation LLC
2C8D48 (base 16) Smart Innovation LLC
7F,Tower B,Jianxing
ShenZhen GuangZhou 518055
CN
38-8C-EF (hex) Samsung Electronics Co.,Ltd
388CEF (base 16) Samsung Electronics Co.,Ltd
129, Samsung-ro, Youngtongl-Gu
Suwon Gyeonggi-Do 16677
KR
58-60-10 (hex) shenzhen zovoton electronic co.,ltd
586010 (base 16) shenzhen zovoton electronic co.,ltd
1F 4 Blok, jinrui zhonghe industrial park, huarong road, tongsheng community, dalang street, longhua district, Shenzhen city, Guangdong province, china
shenzhen guangdong 518100
CN
0C-C5-74 (hex) FRITZ! Technology GmbH
0CC574 (base 16) FRITZ! Technology GmbH
Alt-Moabit 95
Berlin Berlin 10559
DE
84-70-03 (hex) Axon Networks Inc.
847003 (base 16) Axon Networks Inc.
15420 Laguna Canyon rd.
Irvine CA 92618
US
A0-FF-FD (hex) HMD Global Oy
A0FFFD (base 16) HMD Global Oy
Bertel Jungin aukio 9
Espoo 02600
FI
30-7A-D2 (hex) Apple, Inc.
307AD2 (base 16) Apple, Inc.
1 Infinite Loop
Cupertino CA 95014
US
D4-2D-CC (hex) Apple, Inc.
D42DCC (base 16) Apple, Inc.
1 Infinite Loop
Cupertino CA 95014
US
04-2E-C1 (hex) Apple, Inc.
042EC1 (base 16) Apple, Inc.
1 Infinite Loop
Cupertino CA 95014
US
B4-55-75 (hex) Apple, Inc.
B45575 (base 16) Apple, Inc.
1 Infinite Loop
Cupertino CA 95014
US
68-30-36 (hex) Apple, Inc.
683036 (base 16) Apple, Inc.
1 Infinite Loop
Cupertino CA 95014
US
28-4B-54 (hex) Apple, Inc.
284B54 (base 16) Apple, Inc.
1 Infinite Loop
Cupertino CA 95014
US
6C-E4-A4 (hex) Silicon Laboratories
6CE4A4 (base 16) Silicon Laboratories
400 West Cesar Chavez
Austin TX 78701
US
90-3F-86 (hex) New H3C Technologies Co., Ltd
903F86 (base 16) New H3C Technologies Co., Ltd
466 Changhe Road, Binjiang District
Hangzhou Zhejiang 310052
CN
6C-88-5F (hex) Private
6C885F (base 16) Private
60-D4-AF (hex) Honor Device Co., Ltd.
60D4AF (base 16) Honor Device Co., Ltd.
Suite 3401, Unit A, Building 6, Shum Yip Sky Park, No. 8089, Hongli West Road, Xiangmihu Street, Futian District
Shenzhen Guangdong 518040
CN
A0-E3-90 (hex) Apple, Inc.
A0E390 (base 16) Apple, Inc.
1 Infinite Loop
Cupertino CA 95014
US
6C-4C-BC (hex) TP-Link Systems Inc.
6C4CBC (base 16) TP-Link Systems Inc.
10 Mauchly
Irvine CA 92618
US
6C-87-20 (hex) New H3C Technologies Co., Ltd
6C8720 (base 16) New H3C Technologies Co., Ltd
466 Changhe Road, Binjiang District
@ -135389,12 +135596,6 @@ A4DB4C (base 16) RAI Institute
San Francisco CA 94107
US
F8-EF-B1 (hex) Hangzhou Zhongxinhui lntelligent Technology Co.,Ltd.
F8EFB1 (base 16) Hangzhou Zhongxinhui lntelligent Technology Co.,Ltd.
Room 809, Building B, No. 567 Yueming Road, Xixing Street,
Hangzhou Binjiang Distric 310000
CN
2C-91-AB (hex) AVM Audiovisuelles Marketing und Computersysteme GmbH
2C91AB (base 16) AVM Audiovisuelles Marketing und Computersysteme GmbH
Alt-Moabit 95
@ -136283,6 +136484,90 @@ E8F60A (base 16) Espressif Inc.
Shanghai Shanghai 201203
CN
BC-89-F8 (hex) GD Midea Air-Conditioning Equipment Co.,Ltd.
BC89F8 (base 16) GD Midea Air-Conditioning Equipment Co.,Ltd.
Midea Global Innovation Center,Beijiao Town,Shunde
Foshan Guangdong 528311
CN
80-57-22 (hex) Wuxi Sunning Smart Devices Co., Ltd
805722 (base 16) Wuxi Sunning Smart Devices Co., Ltd
No.52, Zone C, Huigu Pioneer Park, Huishan Economic Development Zone, Wuxi
Wuxi jiangsu 214174
CN
F8-EF-B1 (hex) Hangzhou Zhongxinghui Intelligent Technology Co., Ltd.
F8EFB1 (base 16) Hangzhou Zhongxinghui Intelligent Technology Co., Ltd.
Room 809, Building B, No. 567 Yueming Road, Xixing Street,
Hangzhou Binjiang Distric 310000
CN
C0-2E-5F (hex) Zyxel Communications Corporation
C02E5F (base 16) Zyxel Communications Corporation
No. 6 Innovation Road II, Science Park
Hsichu Taiwan 300
TW
24-A1-0D (hex) IEEE Registration Authority
24A10D (base 16) IEEE Registration Authority
445 Hoes Lane
Piscataway NJ 08554
US
A8-C0-50 (hex) Quectel Wireless Solutions Co.,Ltd.
A8C050 (base 16) Quectel Wireless Solutions Co.,Ltd.
7th Floor, Hongye Building, No.1801 Hongmei Road, Xuhui District
Shanghai 200233
CN
1C-C3-AB (hex) Espressif Inc.
1CC3AB (base 16) Espressif Inc.
Room 204, Building 2, 690 Bibo Rd, Pudong New Area
Shanghai Shanghai 201203
CN
08-3B-C1 (hex) Hangzhou Hikvision Digital Technology Co.,Ltd.
083BC1 (base 16) Hangzhou Hikvision Digital Technology Co.,Ltd.
No.555 Qianmo Road
Hangzhou Zhejiang 310052
CN
B4-B8-53 (hex) Honor Device Co., Ltd.
B4B853 (base 16) Honor Device Co., Ltd.
Suite 3401, Unit A, Building 6, Shum Yip Sky Park, No. 8089, Hongli West Road, Xiangmihu Street, Futian District
Shenzhen Guangdong 518040
CN
F8-F2-F0 (hex) Chipsea Technologies (Shenzhen) Crop.
F8F2F0 (base 16) Chipsea Technologies (Shenzhen) Crop.
Room 301, Building 1, Shenzhen Bay Innovation and Technology Center, Keyuan Avenue, High-tech Zone Community, Yuehai Subdistrict, Nanshan District, Shenzhen
Shenzhen 518000
CN
E4-2F-37 (hex) Apple, Inc.
E42F37 (base 16) Apple, Inc.
1 Infinite Loop
Cupertino CA 95014
US
64-BD-6D (hex) Apple, Inc.
64BD6D (base 16) Apple, Inc.
1 Infinite Loop
Cupertino CA 95014
US
E8-C3-86 (hex) Apple, Inc.
E8C386 (base 16) Apple, Inc.
1 Infinite Loop
Cupertino CA 95014
US
58-04-4F (hex) TP-Link Systems Inc.
58044F (base 16) TP-Link Systems Inc.
10 Mauchly
Irvine CA 92618
US
B0-0C-9D (hex) Quectel Wireless Solutions Co.,Ltd.
B00C9D (base 16) Quectel Wireless Solutions Co.,Ltd.
7th Floor, Hongye Building, No.1801 Hongmei Road, Xuhui District
@ -182090,12 +182375,6 @@ EC8152 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
San Jose CA 94568
US
54-D6-0D (hex) Hangzhou Ezviz Software Co.,Ltd.
54D60D (base 16) Hangzhou Ezviz Software Co.,Ltd.
17th Floor, Building D, No.188 Qizhi East Stree, Xixing Subdistrict, Binjiang District
Hangzhou Zhejiang 310051
CN
58-8F-CF (hex) Hangzhou Ezviz Software Co.,Ltd.
588FCF (base 16) Hangzhou Ezviz Software Co.,Ltd.
17th Floor, Building D, No.188 Qizhi East Stree, Xixing Subdistrict, Binjiang District
@ -182114,11 +182393,11 @@ EC8152 (base 16) HUAWEI TECHNOLOGIES CO.,LTD
Shanghai 201206
CN
00-0B-0F (hex) Bosch Rexroth AG
000B0F (base 16) Bosch Rexroth AG
Bgm.-Dr.Nebel-Str.2
Lohr am Main 97816
NL
54-D6-0D (hex) Hangzhou Ezviz Software Co.,Ltd.
54D60D (base 16) Hangzhou Ezviz Software Co.,Ltd.
17th Floor, Building D, No.188 Qizhi East Stree, Xixing Subdistrict, Binjiang District
Hangzhou Zhejiang 310051
CN
D4-0D-AB (hex) Shenzhen Cudy Technology Co., Ltd.
D40DAB (base 16) Shenzhen Cudy Technology Co., Ltd.
@ -182132,6 +182411,96 @@ D40DAB (base 16) Shenzhen Cudy Technology Co., Ltd.
shenzhen guangdong 518057
CN
00-0B-0F (hex) Bosch Rexroth AG
000B0F (base 16) Bosch Rexroth AG
Bgm.-Dr.Nebel-Str.2
Lohr am Main 97816
NL
84-93-EC (hex) Guangzhou Shiyuan Electronic Technology Company Limited
8493EC (base 16) Guangzhou Shiyuan Electronic Technology Company Limited
No.6, 4th Yunpu Road, Yunpu industry District
Guangzhou Guangdong 510530
CN
F0-70-84 (hex) Actiontec Electronics Inc.
F07084 (base 16) Actiontec Electronics Inc.
2445 Augustine Dr #501
Santa Clara CA 95054
US
40-44-F7 (hex) Nintendo Co.,Ltd
4044F7 (base 16) Nintendo Co.,Ltd
11-1 HOKOTATE-CHO KAMITOBA,MINAMI-KU
KYOTO KYOTO 601-8501
JP
A4-05-FD (hex) Bouffalo Lab (Nanjing) Co., Ltd.
A405FD (base 16) Bouffalo Lab (Nanjing) Co., Ltd.
5F, Gongxiang Space, No.100 Tuanjie Road, Nanjing, China
Nanjing Jiangsu 211800
CN
3C-22-7F (hex) Quectel Wireless Solutions Co., Ltd.
3C227F (base 16) Quectel Wireless Solutions Co., Ltd.
Building 5, Shanghai Business Park Phase III (Area B), No.1016 Tianlin Road, Minhang District
Shanghai 200233
CN
A0-90-B5 (hex) Tiinlab Corporation
A090B5 (base 16) Tiinlab Corporation
Building A Room 201 Cooperation District between Shenzhen and HongKong,Qianwan Road No.1,Shenzhen City, Business Address:No. 3333, Liuxian AvenueTower A, 35th Floor,Tanglang City, Nanshan District, Shenzhen, China
Shenzhen Guangdong 518000
CN
28-83-28 (hex) EMALDO TECHNOLOGY(HK)LIMITED
288328 (base 16) EMALDO TECHNOLOGY(HK)LIMITED
13/F., Golden Dragon Comm. Bldg., 522 Nathan Road, Yau Ma Tei, Kowloon
HONG KONG 999077
HK
B0-1F-F4 (hex) Sagemcom Broadband SAS
B01FF4 (base 16) Sagemcom Broadband SAS
250, route de l'Empereur
Rueil Malmaison Cedex hauts de seine 92848
FR
AC-EB-E6 (hex) Espressif Inc.
ACEBE6 (base 16) Espressif Inc.
Room 204, Building 2, 690 Bibo Rd, Pudong New Area
Shanghai Shanghai 201203
CN
E8-B3-EE (hex) Pixelent Inc.
E8B3EE (base 16) Pixelent Inc.
#402 HanGuk Mediventure Center
76, Dongnae-ro, Dong-gu Daegu 41061
KR
6C-7A-63 (hex) Arista Networks
6C7A63 (base 16) Arista Networks
5453 Great America Parkway
Santa Clara CA 95054
US
C4-16-8F (hex) Apple, Inc.
C4168F (base 16) Apple, Inc.
1 Infinite Loop
Cupertino CA 95014
US
F8-2A-E2 (hex) Apple, Inc.
F82AE2 (base 16) Apple, Inc.
1 Infinite Loop
Cupertino CA 95014
US
84-5C-31 (hex) Dell Inc.
845C31 (base 16) Dell Inc.
One Dell Way
Round Rock TX 78682
US
C8-5C-E2 (hex) IEEE Registration Authority
C85CE2 (base 16) IEEE Registration Authority
445 Hoes Lane
@ -227558,8 +227927,86 @@ E88F16 (base 16) Skullcandy
Copenhagen 2450
DK
D8-91-1D (hex) Jiangsu Yuwell POCTech Biotechnology Co.,Ltd
D8911D (base 16) Jiangsu Yuwell POCTech Biotechnology Co.,Ltd
No.5 Baisheng Road Development Zone, 212300 Danyang, Jiangsu, PEOPLES REPUBLIC OF CHINA
Danyang 212300
CN
30-07-5C (hex) 43403
30075C (base 16) 43403
8 Floor, Bd B, information port, Langshan RD, Nanshan district,
Shenzhen Guangdong 518057
CN
AC-39-3D (hex) eero inc.
AC393D (base 16) eero inc.
660 3rd Street
San Francisco CA 94107
US
00-E6-07 (hex) AURCORE TECHNOLOGY INC.
00E607 (base 16) AURCORE TECHNOLOGY INC.
25691 ATLANTIC OCEAN DRIVE UNIT B10
LAKE FOREST CA 92630
US
2C-27-E4 (hex) Luxshare Precision Industry (Xuancheng) Co.,Ltd.
2C27E4 (base 16) Luxshare Precision Industry (Xuancheng) Co.,Ltd.
Address: No.5 Baishou Road, Xuancheng High-Tech Industrial Development Zone
Xuancheng Anhui 242000
CN
4C-D7-4A (hex) Vantiva USA LLC
4CD74A (base 16) Vantiva USA LLC
4855 Peachtree Industrial Blvd, Suite 200
Norcross GA 30902
US
FC-96-3E (hex) EM Microelectronic
FC963E (base 16) EM Microelectronic
Rue des Sors 3
Marin-Epagnier Neuchatel 2074
CH
FC-CF-9F (hex) EM Microelectronic
FCCF9F (base 16) EM Microelectronic
Rue des Sors 3
Marin-Epagnier Neuchatel 2074
CH
B4-04-29 (hex) Guangzhou Shiyuan Electronic Technology Company Limited
B40429 (base 16) Guangzhou Shiyuan Electronic Technology Company Limited
No.6, 4th Yunpu Road, Yunpu industry District
Guangzhou Guangdong 510530
CN
D4-25-DE (hex) New H3C Technologies Co., Ltd
D425DE (base 16) New H3C Technologies Co., Ltd
466 Changhe Road, Binjiang District
Hangzhou Zhejiang 310052
CN
B0-E8-E8 (hex) Silicon Laboratories
B0E8E8 (base 16) Silicon Laboratories
400 West Cesar Chavez
Austin TX 78701
US
64-69-11 (hex) APTIV SERVICES US, LLC
646911 (base 16) APTIV SERVICES US, LLC
5725 Innovation Drive
Troy MI 48098
US
04-D6-88 (hex) CIG SHANGHAI CO LTD
04D688 (base 16) CIG SHANGHAI CO LTD
5th Floor, Building 8 No 2388 Chenhang Road
SHANGHAI 201114
CN
78-79-84 (hex) Apple, Inc.
787984 (base 16) Apple, Inc.
1 Infinite Loop
Cupertino CA 95014
US

View File

@ -968,12 +968,6 @@ C00000-CFFFFF (base 16) BlueEyes Technology
Suresnes 92150
FR
6C-93-08 (hex) Shenzhen C & D Electronics Co., Ltd.
500000-5FFFFF (base 16) Shenzhen C & D Electronics Co., Ltd.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
6C-93-08 (hex) WATERFORD CONSULTANTS LLC
100000-1FFFFF (base 16) WATERFORD CONSULTANTS LLC
7430 NEW TECHNOLOGY WAY, Suite 150
@ -1634,12 +1628,6 @@ A4-53-EE (hex) Stellamore
Shenzhen Guangdong 518100
CN
8C-AE-49 (hex) Shenzhen C & D Electronics Co., Ltd.
E00000-EFFFFF (base 16) Shenzhen C & D Electronics Co., Ltd.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
88-5F-E8 (hex) Apoidea Technology Co., Ltd.
100000-1FFFFF (base 16) Apoidea Technology Co., Ltd.
No. 111, Boyun Road
@ -5969,12 +5957,6 @@ A00000-AFFFFF (base 16) Fancom
Panningen Limburg 5981 XW
NL
78-39-2D (hex) Shenzhen C & D Electronics Co., Ltd.
700000-7FFFFF (base 16) Shenzhen C & D Electronics Co., Ltd.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
C8-98-DB (hex) Quantum Co., Ltd.
600000-6FFFFF (base 16) Quantum Co., Ltd.
909-15, Ganam-ro, Ganam-eup
@ -6200,12 +6182,6 @@ C00000-CFFFFF (base 16) Huizhou KDT Intelligent Display Technology Co. Ltd
Huizhou Guangdong 516006
CN
34-C8-D6 (hex) Shenzhen C & D Electronics Co., Ltd.
E00000-EFFFFF (base 16) Shenzhen C & D Electronics Co., Ltd.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
34-C8-D6 (hex) Illumina
800000-8FFFFF (base 16) Illumina
5200 Illumina Way
@ -6386,12 +6362,6 @@ B00000-BFFFFF (base 16) Shen zhen shi shang mei dian zi shang wu you xian g
Shenzhen Guangdong Province 518100
CN
10-63-A3 (hex) Shenzhen C & D Electronics Co., Ltd.
800000-8FFFFF (base 16) Shenzhen C & D Electronics Co., Ltd.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
5C-87-D8 (hex) Shenzhen Beiens Import and Export Co.,Ltd
300000-3FFFFF (base 16) Shenzhen Beiens Import and Export Co.,Ltd
Suite 503, Building U3, Junxiang U8 Intelligent Manufacturing Industrial Park, Guxing Community, Xixiang Street, Baoan District, Shenzhen
@ -7028,12 +6998,6 @@ F8-2B-E6 (hex) ViewSonic Corp
LA CA 92821
US
F8-2B-E6 (hex) Shenzhen C & D Electronics Co., Ltd.
B00000-BFFFFF (base 16) Shenzhen C & D Electronics Co., Ltd.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
F8-2B-E6 (hex) Flextronics ComputingSuZhou)Co.,LTD.
200000-2FFFFF (base 16) Flextronics ComputingSuZhou)Co.,LTD.
No.1 Guanpu Road, Guoxiang Street, Wuzhong District,Suzhou, Jiangsu, China
@ -7205,12 +7169,6 @@ B00000-BFFFFF (base 16) Chengdu Juxun Electronic Technology Co.,Ltd
Chengdu Sichuan 610500
CN
04-58-5D (hex) Shenzhen C & D Electronics Co., Ltd.
E00000-EFFFFF (base 16) Shenzhen C & D Electronics Co., Ltd.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
B0-CC-CE (hex) Steelco SpA
000000-0FFFFF (base 16) Steelco SpA
via Balegante 27
@ -7367,6 +7325,66 @@ F4-97-9D (hex) Smart Access Designs, LLC
Cheshire CT 06410
US
F8-2B-E6 (hex) Shanghai Kanghai Information System CO.,LTD.
B00000-BFFFFF (base 16) Shanghai Kanghai Information System CO.,LTD.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
04-58-5D (hex) Shanghai Kanghai Information System CO.,LTD.
E00000-EFFFFF (base 16) Shanghai Kanghai Information System CO.,LTD.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
78-39-2D (hex) Shanghai Kanghai Information System CO.,LTD.
700000-7FFFFF (base 16) Shanghai Kanghai Information System CO.,LTD.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
34-C8-D6 (hex) Shanghai Kanghai Information System CO.,LTD.
E00000-EFFFFF (base 16) Shanghai Kanghai Information System CO.,LTD.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
10-63-A3 (hex) Shanghai Kanghai Information System CO.,LTD.
800000-8FFFFF (base 16) Shanghai Kanghai Information System CO.,LTD.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
8C-AE-49 (hex) Shanghai Kanghai Information System CO.,LTD.
E00000-EFFFFF (base 16) Shanghai Kanghai Information System CO.,LTD.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
6C-93-08 (hex) Shanghai Kanghai Information System CO.,LTD.
500000-5FFFFF (base 16) Shanghai Kanghai Information System CO.,LTD.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
9C-E4-50 (hex) Strato Automation Inc.
400000-4FFFFF (base 16) Strato Automation Inc.
1550-B Rue de Coulomb
Boucherville Quebec J4B 7Z7
CA
9C-E4-50 (hex) Neways Advanced Applications
500000-5FFFFF (base 16) Neways Advanced Applications
Science Park Eindhoven 5004
Son 5692EA
NL
24-A1-0D (hex) Lobaro GmbH
000000-0FFFFF (base 16) Lobaro GmbH
Stadtdeich 7
Hamburg 20097
DE
B8-4C-87 (hex) Shenzhen Link-all Technology Co., Ltd
300000-3FFFFF (base 16) Shenzhen Link-all Technology Co., Ltd
Floor 5th, Block 9th, Sunny Industrial Zone, Xili Town, Nanshan District, Shenzhen, China
@ -8663,12 +8681,6 @@ C00000-CFFFFF (base 16) Beijing Aumiwalker technology CO.,LTD
SINGAPORE SINGAPORE 380118
SG
38-A8-CD (hex) Shenzhen C & D Electronics Co., Ltd.
700000-7FFFFF (base 16) Shenzhen C & D Electronics Co., Ltd.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
38-A8-CD (hex) ACiiST Smart Networks Ltd.
000000-0FFFFF (base 16) ACiiST Smart Networks Ltd.
119 Ha'Mamshichim
@ -13463,12 +13475,6 @@ EC-5B-CD (hex) Doosan Bobcat North America
Minatoku Tokyo 1080073
JP
F4-20-55 (hex) Shenzhen C & D Electronics Co., Ltd.
A00000-AFFFFF (base 16) Shenzhen C & D Electronics Co., Ltd.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
24-86-25 (hex) Shanghai Xizhi Technology Co., Ltd.
000000-0FFFFF (base 16) Shanghai Xizhi Technology Co., Ltd.
Room 401, Building A, Lenovo Innovation And Technology Park, No. 696, Songtao Road
@ -13622,12 +13628,6 @@ B0-47-5E (hex) MIVO Technology AB
Stockholm 11419
SE
B0-47-5E (hex) Shenzhen C & D Electronics Co., Ltd.
000000-0FFFFF (base 16) Shenzhen C & D Electronics Co., Ltd.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
AC-EF-92 (hex) PROGNOST Systems GmbH
500000-5FFFFF (base 16) PROGNOST Systems GmbH
Daimlerstrasse 10
@ -13736,12 +13736,6 @@ A4-59-D3 (hex) FrontAct Co., Ltd.
wuhan hubei 430206
CN
58-23-BC (hex) Shenzhen C & D Electronics Co., Ltd.
400000-4FFFFF (base 16) Shenzhen C & D Electronics Co., Ltd.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
BC-DF-E1 (hex) Shenzhen Valley Ventures Co.,Ltd.
100000-1FFFFF (base 16) Shenzhen Valley Ventures Co.,Ltd.
905,Building 4Tianan Cloud park, Bantian street, Longgang district
@ -14066,12 +14060,6 @@ B00000-BFFFFF (base 16) GIGA Copper Networks GmbH
Düsseldorf 40470
DE
FC-E4-98 (hex) Shenzhen C & D Electronics Co., Ltd.
300000-3FFFFF (base 16) Shenzhen C & D Electronics Co., Ltd.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
FC-E4-98 (hex) TScale Electronics Mfg. (Kunshan) Co., Ltd
400000-4FFFFF (base 16) TScale Electronics Mfg. (Kunshan) Co., Ltd
No. 99 Jingwei Road, Zhoushi
@ -14222,12 +14210,84 @@ E00000-EFFFFF (base 16) Advant sp. z o.o.
Shenzhen Guangdong 518101
CN
F4-20-55 (hex) Shanghai Kanghai Information System CO.,LTD.
A00000-AFFFFF (base 16) Shanghai Kanghai Information System CO.,LTD.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
B0-47-5E (hex) Shanghai Kanghai Information System CO.,LTD.
000000-0FFFFF (base 16) Shanghai Kanghai Information System CO.,LTD.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
58-23-BC (hex) Shanghai Kanghai Information System CO.,LTD.
400000-4FFFFF (base 16) Shanghai Kanghai Information System CO.,LTD.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
38-A8-CD (hex) Shanghai Kanghai Information System CO.,LTD.
700000-7FFFFF (base 16) Shanghai Kanghai Information System CO.,LTD.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
9C-E4-50 (hex) AIO SYSTEMS
100000-1FFFFF (base 16) AIO SYSTEMS
158 Jan smuts drive,Walter streetRosebank quarter
Johannesburg 2196
ZA
9C-E4-50 (hex) Shenzhen Lixun Technology Co., Ltd.
200000-2FFFFF (base 16) Shenzhen Lixun Technology Co., Ltd.
Room 209, Building D, Xinda Creative Park, Qianjin 2nd Road and Baotian 2nd Road, Bao'an District
Shenzhen 518102
CN
24-A1-0D (hex) REVUPTECH PRIVATE LIMITED
C00000-CFFFFF (base 16) REVUPTECH PRIVATE LIMITED
G 232, G.B. NAGAR SECTOR 63 NOIDA
NOIDA UTTAR PRADESH 201301
IN
9C-E4-50 (hex) Marelli AL&S ALIT-TZ
300000-3FFFFF (base 16) Marelli AL&S ALIT-TZ
Via dell'industria 17
Tolmezzo Italy/Udine 33028
IT
FC-E4-98 (hex) Shanghai Kanghai Information System CO.,LTD.
300000-3FFFFF (base 16) Shanghai Kanghai Information System CO.,LTD.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
9C-E4-50 (hex) BCD SRL
D00000-DFFFFF (base 16) BCD SRL
Galvez 1060
Rosario FOREIGN 2000
AR
24-A1-0D (hex) Tecnojest SrL
900000-9FFFFF (base 16) Tecnojest SrL
Viale Europa, 128 Spoltore
Spoltore 65010
IT
24-A1-0D (hex) Detroit Defense Inc.
A00000-AFFFFF (base 16) Detroit Defense Inc.
300 E Big Beaver Rd Suite 100
Troy MI 48083
US
24-A1-0D (hex) Goertek Inc.
600000-6FFFFF (base 16) Goertek Inc.
No. 999 Liyuan Street, High-Tech Industrial Development District
Weifang Shandong 261000
CN
B8-4C-87 (hex) Altronix , Corp
A00000-AFFFFF (base 16) Altronix , Corp
140 58th St. Bldg A, Ste 2N
@ -15086,12 +15146,6 @@ A00000-AFFFFF (base 16) Shenzhen Yunlianxin Technology Co., Ltd.
Mail box 15123 Haifa 3508409
IL
18-C3-F4 (hex) Shenzhen C & D Electronics Co., Ltd.
D00000-DFFFFF (base 16) Shenzhen C & D Electronics Co., Ltd.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
18-C3-F4 (hex) Shenzhen Yecon-Tech Co.,Ltd.
700000-7FFFFF (base 16) Shenzhen Yecon-Tech Co.,Ltd.
Building 2,Cuigang Industrial Zone 6,Huaide Community,Fuyong Town,Baoan District, Shenzhen City, Guangdong province, China
@ -15254,12 +15308,6 @@ B00000-BFFFFF (base 16) Beijing Shannoncyber Technology Co.,Ltd
Chengdu Sichuan 650000
CN
70-50-E7 (hex) Shenzhen C & D Electronics Co., Ltd.
000000-0FFFFF (base 16) Shenzhen C & D Electronics Co., Ltd.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
80-02-F4 (hex) Jiangsu Vedkang Medicl Sclence and Technology Co.,Ltd
D00000-DFFFFF (base 16) Jiangsu Vedkang Medicl Sclence and Technology Co.,Ltd
No. 52, Guoxiang Road, Wujin economic development zone
@ -16082,12 +16130,6 @@ C00000-CFFFFF (base 16) Ariston Thermo s.p.a.
Fabriano Ancona 60044
IT
0C-5C-B5 (hex) Shenzhen C & D Electronics Co., Ltd.
800000-8FFFFF (base 16) Shenzhen C & D Electronics Co., Ltd.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
0C-5C-B5 (hex) iH&S Technology Limited
300000-3FFFFF (base 16) iH&S Technology Limited
iH&S Technology Limited
@ -16412,12 +16454,6 @@ DC-4A-9E (hex) Advanced Electronics Ltd
Newcastle NE12 8EW
GB
58-95-D8 (hex) Shenzhen C & D Electronics Co., Ltd.
800000-8FFFFF (base 16) Shenzhen C & D Electronics Co., Ltd.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
FC-CD-2F (hex) Eltek brojila d.o.o.
E00000-EFFFFF (base 16) Eltek brojila d.o.o.
Svetice 24
@ -16874,12 +16910,6 @@ B00000-BFFFFF (base 16) Signal Hound
Vista CA 92081
US
64-62-66 (hex) Shenzhen C & D Electronics Co., Ltd.
700000-7FFFFF (base 16) Shenzhen C & D Electronics Co., Ltd.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
14-AE-85 (hex) Trimble LEM
800000-8FFFFF (base 16) Trimble LEM
10368 Westmoor Dr
@ -18170,12 +18200,6 @@ C00000-CFFFFF (base 16) AndroVideo Inc.
Jinhua Zhejiang 321000
CN
C4-FF-BC (hex) Shenzhen C & D Electronics Co., Ltd.
600000-6FFFFF (base 16) Shenzhen C & D Electronics Co., Ltd.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
C4-FF-BC (hex) ShenZhen ZYT Technology co., Ltd
800000-8FFFFF (base 16) ShenZhen ZYT Technology co., Ltd
Floor four,Build C,FuSen Industrial park, HangCheng Avenue,Baoan District
@ -20777,12 +20801,6 @@ B00000-BFFFFF (base 16) Vital Oricraft Flows Technology Co., Ltd.
Qingyuan Guangdong 511500
CN
48-5E-0E (hex) Shenzhen C & D Electronics Co., Ltd.
000000-0FFFFF (base 16) Shenzhen C & D Electronics Co., Ltd.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
48-5E-0E (hex) MHE Electronics
400000-4FFFFF (base 16) MHE Electronics
49Alexander Rd, Westmead
@ -21041,12 +21059,6 @@ B00000-BFFFFF (base 16) Hitachi Rail GTS Austria GmbH
Vienna 1200
AT
EC-74-CD (hex) Shenzhen C & D Electronics Co., Ltd.
100000-1FFFFF (base 16) Shenzhen C & D Electronics Co., Ltd.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
EC-74-CD (hex) Standard Backhaul Communications
500000-5FFFFF (base 16) Standard Backhaul Communications
333 South Highland Ave
@ -21341,12 +21353,6 @@ FC-A2-DF (hex) Beijing KSL Electromechanical Technology Development Co.,Ltd
Beijing 100071
CN
60-A4-34 (hex) Hangzhou Zhongxinhui lntelligent Technology Co.,Ltd.
200000-2FFFFF (base 16) Hangzhou Zhongxinhui lntelligent Technology Co.,Ltd.
Room 809, Building B, No. 567 Yueming Road, Xixing Street,
Hangzhou Binjiang Distric 310000
CN
FC-A2-DF (hex) Orion Power Systems, Inc.
E00000-EFFFFF (base 16) Orion Power Systems, Inc.
2939 W. Beaver Street
@ -21569,18 +21575,111 @@ E0-23-3B (hex) PluralFusion INC
Hochiminh Hochiminh 70000
VN
64-62-66 (hex) Shanghai Kanghai Information System CO.,LTD.
700000-7FFFFF (base 16) Shanghai Kanghai Information System CO.,LTD.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
58-95-D8 (hex) Shanghai Kanghai Information System CO.,LTD.
800000-8FFFFF (base 16) Shanghai Kanghai Information System CO.,LTD.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
0C-5C-B5 (hex) Shanghai Kanghai Information System CO.,LTD.
800000-8FFFFF (base 16) Shanghai Kanghai Information System CO.,LTD.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
70-50-E7 (hex) Shanghai Kanghai Information System CO.,LTD.
000000-0FFFFF (base 16) Shanghai Kanghai Information System CO.,LTD.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
18-C3-F4 (hex) Shanghai Kanghai Information System CO.,LTD.
D00000-DFFFFF (base 16) Shanghai Kanghai Information System CO.,LTD.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
50-FA-CB (hex) Darveen Technology Limited
400000-4FFFFF (base 16) Darveen Technology Limited
3/F, 2nd Building Hui Sheng Da industrial park, Qingcui road, Longhua district, Shenzhen
Shenzhen Guangdong 518000
CN
48-5E-0E (hex) Shanghai Kanghai Information System CO.,LTD.
000000-0FFFFF (base 16) Shanghai Kanghai Information System CO.,LTD.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
EC-74-CD (hex) Shanghai Kanghai Information System CO.,LTD.
100000-1FFFFF (base 16) Shanghai Kanghai Information System CO.,LTD.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
C4-FF-BC (hex) Shanghai Kanghai Information System CO.,LTD.
600000-6FFFFF (base 16) Shanghai Kanghai Information System CO.,LTD.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
50-FA-CB (hex) Shenzhen Evertones Quantum Technology Co., Ltd.
100000-1FFFFF (base 16) Shenzhen Evertones Quantum Technology Co., Ltd.
Room 3907, Tower B, Digital Innovation Center, Beizhan Community, Minzhi Sub-district, Longhua District
Shenzhen Guangdong 518131
CN
24-A1-0D (hex) Shenzhen Star Instrument Co., Ltd.
100000-1FFFFF (base 16) Shenzhen Star Instrument Co., Ltd.
23/F., Coastal Building(west), Haide 3rd Road, Nanshan District
Shenzhen GuangDong 518054
CN
24-A1-0D (hex) Private
B00000-BFFFFF (base 16) Private
60-A4-34 (hex) Hangzhou Zhongxinghui Intelligent Technology Co., Ltd.
200000-2FFFFF (base 16) Hangzhou Zhongxinghui Intelligent Technology Co., Ltd.
Room 809, Building B, No. 567 Yueming Road, Xixing Street,
Hangzhou Binjiang Distric 310000
CN
9C-E4-50 (hex) BEIJING TRANSTREAMS TECHNOLOGY CO.,LTD
700000-7FFFFF (base 16) BEIJING TRANSTREAMS TECHNOLOGY CO.,LTD
Room 1401, 14th Floor, Building 8, No. 8 Kegu 1st Street, Beijing Economic and Technological Development Zone
Beijing Beijing 100176
CN
9C-E4-50 (hex) Shenzhen Kuki Electric Co., Ltd.
E00000-EFFFFF (base 16) Shenzhen Kuki Electric Co., Ltd.
No.6 Shichang Road,Xinqiao Street Baoan District,Shenzhen,Guangdong
Shenzhen Guangdong 518125
CN
9C-E4-50 (hex) Shenzhen HQVT TECHNOLOGY Co.,LTD
900000-9FFFFF (base 16) Shenzhen HQVT TECHNOLOGY Co.,LTD
3/F,Building 8 ,Taihua Wutong Island,Xixiang,Bao'an District
China Guang Dong 518000
CN
9C-E4-50 (hex) Shenzhen Coslight Technology Co.,Ltd.
B00000-BFFFFF (base 16) Shenzhen Coslight Technology Co.,Ltd.
Room 101, Factory Building, No. 2 Guangtian Road, Luotian Community, Yanluo Sub-district, Bao'an District, Shenzhen
Shenzhen 518000
CN
24-A1-0D (hex) Sony Honda Mobility Inc.
200000-2FFFFF (base 16) Sony Honda Mobility Inc.
Midtown-East 9th floor, 9-7-2 Akasaka
Minato-ku Tokyo 107-0052
JP
D0-14-11 (hex) P.B. Elettronica srl
100000-1FFFFF (base 16) P.B. Elettronica srl
Via Santorelli, 8
@ -21671,12 +21770,6 @@ B00000-BFFFFF (base 16) Beijing ThinRedline Technology Co.,Ltd.
Beijing Beijing 100015
CN
88-A6-EF (hex) Shenzhen C & D Electronics Co., Ltd.
C00000-CFFFFF (base 16) Shenzhen C & D Electronics Co., Ltd.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
D0-15-BB (hex) Beijing Guangshu Zhiying Technology Development Co., Ltd.
200000-2FFFFF (base 16) Beijing Guangshu Zhiying Technology Development Co., Ltd.
Room910,Environment Building,16 Guangqumen Inner Street,Dongcheng District
@ -22658,12 +22751,6 @@ DC-36-43 (hex) Hefei EA Excelsior Information Security Co., Ltd.
Shenzhen 518000
CN
04-EE-E8 (hex) Shenzhen C & D Electronics Co., Ltd.
700000-7FFFFF (base 16) Shenzhen C & D Electronics Co., Ltd.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
DC-36-43 (hex) Hangzhou Chingan Tech Co., Ltd.
500000-5FFFFF (base 16) Hangzhou Chingan Tech Co., Ltd.
4F, BLDG. 4, 16# XIYUAN YI ROAD HANGZHOU, ZHEJIANG,CHINA 310030
@ -24086,12 +24173,6 @@ D00000-DFFFFF (base 16) OMNISENSE SYSTEMS PRIVATE LIMITED TAIWAN BRANCH
Budakalasz 2011
HU
54-A4-93 (hex) Shenzhen C & D Electronics Co., Ltd.
400000-4FFFFF (base 16) Shenzhen C & D Electronics Co., Ltd.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
54-A4-93 (hex) ShenZhen Smart&Aspiration Co.,LTD
100000-1FFFFF (base 16) ShenZhen Smart&Aspiration Co.,LTD
Guanlan
@ -28055,12 +28136,6 @@ C0-48-2F (hex) Chengdu Dingfeng Huizhi Technology Co., Ltd
Chengdu Sichuan 610213
CN
C0-48-2F (hex) Shenzhen C & D Electronics Co., Ltd.
B00000-BFFFFF (base 16) Shenzhen C & D Electronics Co., Ltd.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
24-A3-F0 (hex) P4S
E00000-EFFFFF (base 16) P4S
27 bis rue des Plantes
@ -28658,17 +28733,47 @@ B00000-BFFFFF (base 16) Combined Public Communications, LLC
Guro-gu Seoul 08394
KR
50-FA-CB (hex) Vortex Infotech Private Limited
D00000-DFFFFF (base 16) Vortex Infotech Private Limited
101, Corporate Arena, Sitaram Patkar Marg, Behind Mahindra Eminente Society, Goregaon west.
Mumbai Maharashtra 400104
IN
54-A4-93 (hex) Shanghai Kanghai Information System CO.,LTD.
400000-4FFFFF (base 16) Shanghai Kanghai Information System CO.,LTD.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
04-EE-E8 (hex) Shanghai Kanghai Information System CO.,LTD.
700000-7FFFFF (base 16) Shanghai Kanghai Information System CO.,LTD.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
50-FA-CB (hex) 1208815047
600000-6FFFFF (base 16) 1208815047
5F, 547, SAMSEONG-RO, GANGNAM-GU,SEOUL, SOUTH KOREA
seoul 06156
KR
50-FA-CB (hex) Vortex Infotech Private Limited
D00000-DFFFFF (base 16) Vortex Infotech Private Limited
101, Corporate Arena, Sitaram Patkar Marg, Behind Mahindra Eminente Society, Goregaon west.
Mumbai Maharashtra 400104
IN
24-A1-0D (hex) Amina Distribution AS
D00000-DFFFFF (base 16) Amina Distribution AS
Strandsvingen 14A
Stavanger 4032
NO
88-A6-EF (hex) Shanghai Kanghai Information System CO.,LTD.
C00000-CFFFFF (base 16) Shanghai Kanghai Information System CO.,LTD.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
C0-48-2F (hex) Shanghai Kanghai Information System CO.,LTD.
B00000-BFFFFF (base 16) Shanghai Kanghai Information System CO.,LTD.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
C8-5C-E2 (hex) Fela Management AG
000000-0FFFFF (base 16) Fela Management AG
@ -29369,12 +29474,6 @@ D00000-DFFFFF (base 16) Jiangsu AIDriving Co.,Ltd.
D0-96-86 (hex) Private
700000-7FFFFF (base 16) Private
C4-98-94 (hex) Shenzhen C & D Electronics Co., Ltd.
700000-7FFFFF (base 16) Shenzhen C & D Electronics Co., Ltd.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
C4-98-94 (hex) shenzhen lanodo technology Co., Ltd
500000-5FFFFF (base 16) shenzhen lanodo technology Co., Ltd
Room 501 Building D, Qiaoan Industry park, No 308 Wuhe Road, Guanlan, Longhua District
@ -29429,12 +29528,6 @@ A00000-AFFFFF (base 16) VIE STYLE,INC,
Xiamen Fujian 361100
CN
58-47-CA (hex) Shenzhen C & D Electronics Co., Ltd.
600000-6FFFFF (base 16) Shenzhen C & D Electronics Co., Ltd.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
58-47-CA (hex) Kingnuo Intelligent Technology (Jiaxing) Co., Ltd.
900000-9FFFFF (base 16) Kingnuo Intelligent Technology (Jiaxing) Co., Ltd.
ROOM.1202,Yongyue Building, YOUCHEGANG TOWN?XIUZHOU DISTRICT
@ -30227,12 +30320,6 @@ E00000-EFFFFF (base 16) Dongguan zhenxing electronic technology co.,limited
DonggUAN 523768
CN
78-13-05 (hex) Shenzhen C & D Electronics Co., Ltd.
900000-9FFFFF (base 16) Shenzhen C & D Electronics Co., Ltd.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
E8-78-29 (hex) Galcon
200000-2FFFFF (base 16) Galcon
Kfar Blum israel
@ -35081,12 +35168,6 @@ EC-5B-CD (hex) Sfera Labs S.r.l.
Rillieux-La-Pape FRANCE 69140
FR
34-46-63 (hex) Shenzhen C & D Electronics Co., Ltd.
900000-9FFFFF (base 16) Shenzhen C & D Electronics Co., Ltd.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
34-46-63 (hex) Bluesoo Tech (HongKong) Co.,Limited
800000-8FFFFF (base 16) Bluesoo Tech (HongKong) Co.,Limited
Room 05, 28 / F, good view business centre, 2-16 Garden Street, Mong Kok, Kowloon, Hongkong.
@ -35543,12 +35624,6 @@ D00000-DFFFFF (base 16) Annapurna labs
Mail box 15123 Haifa 3508409
IL
04-A1-6F (hex) Shenzhen C & D Electronics Co., Ltd.
000000-0FFFFF (base 16) Shenzhen C & D Electronics Co., Ltd.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
04-A1-6F (hex) Xiamen Akubela Innovation Technology CO., Ltd.
400000-4FFFFF (base 16) Xiamen Akubela Innovation Technology CO., Ltd.
9/F, No.56 Guanri Road, Software Park II, Xiamen 361009, China
@ -35633,12 +35708,6 @@ DC-76-C3 (hex) Bangyan Technology Co., Ltd
Shenzhen Guangdong 518100
CN
DC-76-C3 (hex) Shenzhen C & D Electronics Co., Ltd.
300000-3FFFFF (base 16) Shenzhen C & D Electronics Co., Ltd.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
C0-83-59 (hex) UNA Digital Inc.
400000-4FFFFF (base 16) UNA Digital Inc.
5F, 41-20, Burim-ro 170beon-gil
@ -35837,12 +35906,6 @@ FC-E4-98 (hex) E Haute Intelligent Technology Co., Ltd
shanwei guangdong 516600
CN
E0-23-3B (hex) Shenzhen C & D Electronics Co., Ltd.
B00000-BFFFFF (base 16) Shenzhen C & D Electronics Co., Ltd.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
48-08-EB (hex) Guangdong Three Link Technology Co., Ltd
200000-2FFFFF (base 16) Guangdong Three Link Technology Co., Ltd
3 floor, A1 Building, No. 75 Jianshe Road, Nankeng Village, Qishi Town
@ -35890,3 +35953,75 @@ A00000-AFFFFF (base 16) AUO DISPLAY PLUS CORPORATION
No. 1, Gongye E. 3rd Rd., East Dist., Hsinchu Science Park
Hsinchu Taiwan 30075
TW
9C-E4-50 (hex) Shenzhen Chengzhao Technology Co., Ltd.
000000-0FFFFF (base 16) Shenzhen Chengzhao Technology Co., Ltd.
Building A, No. 13 Huayin Road, Hualang Community, Dalang Subdistrict, Longhua District
Shenzhen Guangdong 518000
CN
C4-98-94 (hex) Shanghai Kanghai Information System CO.,LTD.
700000-7FFFFF (base 16) Shanghai Kanghai Information System CO.,LTD.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
34-46-63 (hex) Shanghai Kanghai Information System CO.,LTD.
900000-9FFFFF (base 16) Shanghai Kanghai Information System CO.,LTD.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
04-A1-6F (hex) Shanghai Kanghai Information System CO.,LTD.
000000-0FFFFF (base 16) Shanghai Kanghai Information System CO.,LTD.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
78-13-05 (hex) Shanghai Kanghai Information System CO.,LTD.
900000-9FFFFF (base 16) Shanghai Kanghai Information System CO.,LTD.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
58-47-CA (hex) Shanghai Kanghai Information System CO.,LTD.
600000-6FFFFF (base 16) Shanghai Kanghai Information System CO.,LTD.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
DC-76-C3 (hex) Shanghai Kanghai Information System CO.,LTD.
300000-3FFFFF (base 16) Shanghai Kanghai Information System CO.,LTD.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
E0-23-3B (hex) Shanghai Kanghai Information System CO.,LTD.
B00000-BFFFFF (base 16) Shanghai Kanghai Information System CO.,LTD.
9th FIoor, Building 9, No.1 Qingxiang road, BaoNeng Science and TechnoIogy Industrial Park, Longhua New District
ShenZhen GuangDong 518000
CN
24-A1-0D (hex) Avantel Limited
500000-5FFFFF (base 16) Avantel Limited
Plot No. S-119M, E-CITYMaheshwaram Mandal, Raviryal, Rangareddy
HYDERABAD Telangana 501510
IN
24-A1-0D (hex) Rhymebus corporation
300000-3FFFFF (base 16) Rhymebus corporation
No. 17, 33rd Road, Taichung Industrial Park
Taichung 40768
TW
24-A1-0D (hex) Dongguan Taijie Electronics Technology Co.,Ltd
400000-4FFFFF (base 16) Dongguan Taijie Electronics Technology Co.,Ltd
5F, 6# Building, Sanjia Industrial Park, Dongkeng Town
Dongguan Guangdong 523000
CN
24-A1-0D (hex) Luxvisions lnnovation TechnologyCorp.Limited
800000-8FFFFF (base 16) Luxvisions lnnovation TechnologyCorp.Limited
No. 69, Yongsheng Road, Huangpu District, Guangzhou
Guangzhou Guangdong Province 510000
CN

File diff suppressed because it is too large Load Diff

View File

@ -9,8 +9,8 @@
# The latest version can be obtained from
# http://www.linux-usb.org/usb.ids
#
# Version: 2025.07.26
# Date: 2025-07-26 20:34:01
# Version: 2025.09.15
# Date: 2025-09-15 20:34:02
#
# Vendors, devices and interfaces. Please keep sorted.
@ -13488,7 +13488,9 @@
0b0d ProjectLab
0000 CenturyCD
0b0e GN Netcom
0301 Jabra EVOLVE 20
0305 Jabra EVOLVE Link MS
030c Jabra EVOLVE 65
0311 Jabra EVOLVE 65
0312 enc060:Buttons Volume up/down/mute + phone [Jabra]
0343 Jabra UC VOICE 150a
@ -13507,6 +13509,11 @@
2007 GN 2000 Stereo Corded Headset
2456 Jabra SPEAK 810
245e Jabra Link 370
248a Jabra Elite 85h
24b8 Jabra Evolve2 65
24bb Jabra Evolve2 85
24c9 Jabra Link 380
24ca Jabra Link 380
620c Jabra BT620s
9330 Jabra GN9330 Headset
a346 Jabra Engage 75 Stereo

View File

@ -1138,6 +1138,7 @@ manpages = [
'systemd-sysext-initrd.service',
'systemd-sysext.service'],
'ENABLE_SYSEXT'],
['sysext.conf', '5', ['confext.conf'], 'ENABLE_SYSEXT'],
['systemd-system-update-generator', '8', [], ''],
['systemd-system.conf',
'5',

101
man/sysext.conf.xml Normal file
View File

@ -0,0 +1,101 @@
<?xml version='1.0'?> <!--*-nxml-*-->
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="sysext.conf" conditional='ENABLE_SYSEXT'
xmlns:xi="http://www.w3.org/2001/XInclude">
<refentryinfo>
<title>sysext.conf</title>
<productname>systemd</productname>
</refentryinfo>
<refmeta>
<refentrytitle>sysext.conf</refentrytitle>
<manvolnum>5</manvolnum>
</refmeta>
<refnamediv>
<refname>sysext.conf</refname>
<refname>confext.conf</refname>
<refname>sysext.conf.d</refname>
<refname>confext.conf.d</refname>
<refpurpose>Configuration files for systemd-sysext</refpurpose>
</refnamediv>
<refsynopsisdiv>
<para><filename>/etc/systemd/sysext.conf</filename></para>
<para><filename>/etc/systemd/sysext.conf.d/*.conf</filename></para>
<para><filename>/run/systemd/sysext.conf</filename></para>
<para><filename>/run/systemd/sysext.conf.d/*.conf</filename></para>
<para><filename>/usr/lib/systemd/sysext.conf</filename></para>
<para><filename>/usr/lib/systemd/sysext.conf.d/*.conf</filename></para>
<para><filename>/etc/systemd/confext.conf</filename></para>
<para><filename>/etc/systemd/confext.conf.d/*.conf</filename></para>
<para><filename>/run/systemd/confext.conf</filename></para>
<para><filename>/run/systemd/confext.conf.d/*.conf</filename></para>
<para><filename>/usr/lib/systemd/confext.conf</filename></para>
<para><filename>/usr/lib/systemd/confext.conf.d/*.conf</filename></para>
</refsynopsisdiv>
<refsect1>
<title>Description</title>
<para>These configuration files control the behavior of
<citerefentry><refentrytitle>systemd-sysext</refentrytitle><manvolnum>8</manvolnum></citerefentry> and
<citerefentry><refentrytitle>systemd-confext</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
They are especially useful when needing to customize the behavior of the
respective extension service units.</para>
</refsect1>
<xi:include href="standard-conf.xml" xpointer="main-conf" />
<refsect1>
<title>Options</title>
<para>The following options are understood in both the <literal>[Sysext]</literal> and
<literal>[Confext]</literal> sections:</para>
<refsect2>
<title>Section Options</title>
<variablelist class='config-directives'>
<varlistentry>
<term><varname>Mutable=</varname></term>
<listitem><para>Set the mutable mode for system extensions. Takes one of <literal>no</literal>,
<literal>yes</literal>, <literal>auto</literal>, <literal>import</literal>,
<literal>ephemeral</literal>, or <literal>ephemeral-import</literal>. For details about the modes,
see the <option>--mutable=</option> option in
<citerefentry><refentrytitle>systemd-sysext</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
Defaults to <literal>no</literal>.</para>
<xi:include href="version-info.xml" xpointer="v259"/>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>ImagePolicy=</varname></term>
<listitem><para>Set the image policy. Takes an image policy string as argument, as per
<citerefentry><refentrytitle>systemd.image-policy</refentrytitle><manvolnum>7</manvolnum></citerefentry>.
For details, see the <option>--image-policy=</option> option in
<citerefentry><refentrytitle>systemd-sysext</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
</para>
<xi:include href="version-info.xml" xpointer="v259"/>
</listitem>
</varlistentry>
</variablelist>
</refsect2>
</refsect1>
<refsect1>
<title>See Also</title>
<para><simplelist type="inline">
<member><citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry></member>
<member><citerefentry><refentrytitle>systemd-sysext</refentrytitle><manvolnum>8</manvolnum></citerefentry></member>
<member><citerefentry><refentrytitle>systemd.syntax</refentrytitle><manvolnum>7</manvolnum></citerefentry></member>
</simplelist></para>
</refsect1>
</refentry>

View File

@ -74,7 +74,12 @@
<para>System extension images are strictly read-only by default. On mutable host file systems,
<filename>/usr/</filename> and <filename>/opt/</filename> hierarchies become read-only while extensions
are merged, unless mutability is enabled. Mutability may be enabled via the <option>--mutable=</option>
option; see "Mutability" below for more information.</para>
option and the <varname>Mutable=</varname> option in the configuration file;
see "Mutability" below for more information.</para>
<para>Various command options can be configured globally via configuration files. See
<citerefentry><refentrytitle>sysext.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>
for details.</para>
<para>System extensions are supposed to be purely additive, i.e. they are supposed to include only files
that do not exist in the underlying basic OS image. However, the underlying mechanism (overlayfs) also
@ -477,6 +482,7 @@
<title>See Also</title>
<para><simplelist type="inline">
<member><citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry></member>
<member><citerefentry><refentrytitle>sysext.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry></member>
<member><citerefentry><refentrytitle>systemd-nspawn</refentrytitle><manvolnum>1</manvolnum></citerefentry></member>
<member><citerefentry><refentrytitle>systemd-stub</refentrytitle><manvolnum>7</manvolnum></citerefentry></member>
<member><citerefentry><refentrytitle>importctl</refentrytitle><manvolnum>1</manvolnum></citerefentry></member>

View File

@ -585,6 +585,26 @@
<xi:include href="version-info.xml" xpointer="v226"/></listitem>
</varlistentry>
<varlistentry>
<term><varname>NamespacePath=</varname></term>
<listitem><para>Takes the path to a file representing a kernel
network namespace that the container shall run in. The specified path
should refer to a (possibly bind-mounted) network namespace file, as
exposed by the kernel below <filename>/proc/$PID/ns/net</filename>.
This makes the container enter the given network namespace. One of the
typical use cases is to give a network namespace under
<filename>/run/netns</filename> created by <citerefentry
project='man-pages'><refentrytitle>ip-netns</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
for example, <varname>NamespacePath=/run/netns/foo</varname>.
Note that this option cannot be used together with other
network-related options, such as <varname>Private=</varname>
or <varname>Interface=</varname>. This option corresponds to the
<option>--network-namespace-path</option> command line switch.</para>
<xi:include href="version-info.xml" xpointer="v259"/></listitem>
</varlistentry>
<varlistentry>
<term><varname>VirtualEthernet=</varname></term>

View File

@ -635,6 +635,9 @@ progs = [['quotaon', '/usr/sbin/quotaon' ],
['kmod', '/usr/bin/kmod' ],
['kexec', '/usr/sbin/kexec' ],
['sulogin', '/usr/sbin/sulogin' ],
['swapon', '/usr/sbin/swapon' ],
['swapoff', '/usr/sbin/swapoff' ],
['agetty', '/usr/sbin/agetty' ],
['mount', '/usr/bin/mount', 'MOUNT_PATH'],
['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],

View File

@ -1 +1 @@
258~rc4
259~devel

View File

@ -57,6 +57,9 @@ option('quotacheck-path', type : 'string', description : 'path to quotacheck')
option('kmod-path', type : 'string', description : 'path to kmod')
option('kexec-path', type : 'string', description : 'path to kexec')
option('sulogin-path', type : 'string', description : 'path to sulogin')
option('swapon-path', type : 'string', description : 'path to swapon')
option('swapoff-path', type : 'string', description : 'path to swapoff')
option('agetty-path', type : 'string', description : 'path to agetty')
option('mount-path', type : 'string', description : 'path to mount')
option('umount-path', type : 'string', description : 'path to umount')
option('loadkeys-path', type : 'string', description : 'path to loadkeys')

View File

@ -248,7 +248,7 @@ int get_max_fd(void) {
return (int) (m - 1);
}
static int close_all_fds_frugal(const int except[], size_t n_except) {
int close_all_fds_frugal(const int except[], size_t n_except) {
int max_fd, r = 0;
assert(except || n_except == 0);
@ -282,6 +282,42 @@ static int close_all_fds_frugal(const int except[], size_t n_except) {
return r;
}
int close_all_fds_by_proc(const int except[], size_t n_except) {
_cleanup_closedir_ DIR *d = NULL;
int r = 0;
d = opendir("/proc/self/fd");
if (!d)
return close_all_fds_frugal(except, n_except); /* ultimate fallback if /proc/ is not available */
FOREACH_DIRENT(de, d, return -errno) {
int fd = -EBADF, q;
if (!IN_SET(de->d_type, DT_LNK, DT_UNKNOWN))
continue;
fd = parse_fd(de->d_name);
if (fd < 0)
/* Let's better ignore this, just in case */
continue;
if (fd < 3)
continue;
if (fd == dirfd(d))
continue;
if (fd_in_set(fd, except, n_except))
continue;
q = close_nointr(fd);
if (q != -EBADF) /* Valgrind has its own FD and doesn't want to have it closed */
RET_GATHER(r, q);
}
return r;
}
static bool have_close_range = true; /* Assume we live in the future */
static int close_all_fds_special_case(const int except[], size_t n_except) {
@ -348,8 +384,7 @@ int close_all_fds_without_malloc(const int except[], size_t n_except) {
}
int close_all_fds(const int except[], size_t n_except) {
_cleanup_closedir_ DIR *d = NULL;
int r = 0;
int r;
assert(n_except == 0 || except);
@ -359,104 +394,73 @@ int close_all_fds(const int except[], size_t n_except) {
if (r > 0) /* special case worked! */
return 0;
if (have_close_range) {
_cleanup_free_ int *sorted_malloc = NULL;
size_t n_sorted;
int *sorted;
if (!have_close_range)
return close_all_fds_by_proc(except, n_except);
/* In the best case we have close_range() to close all fds between a start and an end fd,
* which we can use on the "inverted" exception array, i.e. all intervals between all
* adjacent pairs from the sorted exception array. This changes loop complexity from O(n)
* where n is number of open fds to O(mlog(m)) where m is the number of fds to keep
* open. Given that we assume n m that's preferable to us. */
_cleanup_free_ int *sorted_malloc = NULL;
size_t n_sorted;
int *sorted;
assert(n_except < SIZE_MAX);
n_sorted = n_except + 1;
/* In the best case we have close_range() to close all fds between a start and an end fd, which we
* can use on the "inverted" exception array, i.e. all intervals between all adjacent pairs from the
* sorted exception array. This changes loop complexity from O(n) where n is number of open fds to
* O(mlog(m)) where m is the number of fds to keep open. Given that we assume n m that's
* preferable to us. */
if (n_sorted > 64) /* Use heap for large numbers of fds, stack otherwise */
sorted = sorted_malloc = new(int, n_sorted);
else
sorted = newa(int, n_sorted);
assert(n_except < SIZE_MAX);
n_sorted = n_except + 1;
if (sorted) {
memcpy(sorted, except, n_except * sizeof(int));
if (n_sorted > ALLOCA_MAX / sizeof(int)) /* Use heap for large numbers of fds, stack otherwise */
sorted = sorted_malloc = new(int, n_sorted);
else
sorted = newa(int, n_sorted);
/* Let's add fd 2 to the list of fds, to simplify the loop below, as this
* allows us to cover the head of the array the same way as the body */
sorted[n_sorted-1] = 2;
if (!sorted) /* Fallback on OOM. */
return close_all_fds_by_proc(except, n_except);
typesafe_qsort(sorted, n_sorted, cmp_int);
memcpy(sorted, except, n_except * sizeof(int));
for (size_t i = 0; i < n_sorted-1; i++) {
int start, end;
/* Let's add fd 2 to the list of fds, to simplify the loop below, as this
* allows us to cover the head of the array the same way as the body */
sorted[n_sorted-1] = 2;
start = MAX(sorted[i], 2); /* The first three fds shall always remain open */
end = MAX(sorted[i+1], 2);
typesafe_qsort(sorted, n_sorted, cmp_int);
assert(end >= start);
for (size_t i = 0; i < n_sorted-1; i++) {
int start, end;
if (end - start <= 1)
continue;
start = MAX(sorted[i], 2); /* The first three fds shall always remain open */
end = MAX(sorted[i+1], 2);
/* Close everything between the start and end fds (both of which shall stay open) */
if (close_range(start + 1, end - 1, 0) < 0) {
if (!ERRNO_IS_NOT_SUPPORTED(errno) && !ERRNO_IS_PRIVILEGE(errno))
return -errno;
assert(end >= start);
have_close_range = false;
break;
}
}
if (end - start <= 1)
continue;
if (have_close_range) {
/* The loop succeeded. Let's now close everything beyond the end */
/* Close everything between the start and end fds (both of which shall stay open) */
if (close_range(start + 1, end - 1, 0) < 0) {
if (!ERRNO_IS_NOT_SUPPORTED(errno) && !ERRNO_IS_PRIVILEGE(errno))
return -errno;
if (sorted[n_sorted-1] >= INT_MAX) /* Dont let the addition below overflow */
return 0;
if (close_range(sorted[n_sorted-1] + 1, INT_MAX, 0) >= 0)
return 0;
if (!ERRNO_IS_NOT_SUPPORTED(errno) && !ERRNO_IS_PRIVILEGE(errno))
return -errno;
have_close_range = false;
}
have_close_range = false;
return close_all_fds_by_proc(except, n_except);
}
/* Fallback on OOM or if close_range() is not supported */
}
d = opendir("/proc/self/fd");
if (!d)
return close_all_fds_frugal(except, n_except); /* ultimate fallback if /proc/ is not available */
/* The loop succeeded. Let's now close everything beyond the end */
FOREACH_DIRENT(de, d, return -errno) {
int fd = -EBADF, q;
if (sorted[n_sorted-1] >= INT_MAX) /* Dont let the addition below overflow */
return 0;
if (!IN_SET(de->d_type, DT_LNK, DT_UNKNOWN))
continue;
if (close_range(sorted[n_sorted-1] + 1, INT_MAX, 0) < 0) {
if (!ERRNO_IS_NOT_SUPPORTED(errno) && !ERRNO_IS_PRIVILEGE(errno))
return -errno;
fd = parse_fd(de->d_name);
if (fd < 0)
/* Let's better ignore this, just in case */
continue;
if (fd < 3)
continue;
if (fd == dirfd(d))
continue;
if (fd_in_set(fd, except, n_except))
continue;
q = close_nointr(fd);
if (q < 0 && q != -EBADF && r >= 0) /* Valgrind has its own FD and doesn't want to have it closed */
r = q;
have_close_range = false;
return close_all_fds_by_proc(except, n_except);
}
return r;
return 0;
}
int pack_fds(int fds[], size_t n_fds) {
@ -1035,10 +1039,9 @@ int fd_get_diskseq(int fd, uint64_t *ret) {
}
int path_is_root_at(int dir_fd, const char *path) {
_cleanup_close_ int fd = -EBADF, pfd = -EBADF;
assert(dir_fd >= 0 || dir_fd == AT_FDCWD);
_cleanup_close_ int fd = -EBADF;
if (!isempty(path)) {
fd = openat(dir_fd, path, O_PATH|O_DIRECTORY|O_CLOEXEC);
if (fd < 0)
@ -1047,19 +1050,19 @@ int path_is_root_at(int dir_fd, const char *path) {
dir_fd = fd;
}
pfd = openat(dir_fd, "..", O_PATH|O_DIRECTORY|O_CLOEXEC);
if (pfd < 0)
return errno == ENOTDIR ? false : -errno;
_cleanup_close_ int root_fd = openat(AT_FDCWD, "/", O_PATH|O_DIRECTORY|O_CLOEXEC);
if (root_fd < 0)
return -errno;
/* Even if the parent directory has the same inode, the fd may not point to the root directory "/",
* and we also need to check that the mount ids are the same. Otherwise, a construct like the
* following could be used to trick us:
/* Even if the root directory has the same inode as our fd, the fd may not point to the root
* directory "/", and we also need to check that the mount ids are the same. Otherwise, a construct
* like the following could be used to trick us:
*
* $ mkdir /tmp/x /tmp/x/y
* $ mount --bind /tmp/x /tmp/x/y
* $ mkdir /tmp/x
* $ mount --bind / /tmp/x
*/
return fds_are_same_mount(dir_fd, pfd);
return fds_are_same_mount(dir_fd, root_fd);
}
int fds_are_same_mount(int fd1, int fd2) {

View File

@ -112,6 +112,8 @@ int get_max_fd(void);
int close_all_fds(const int except[], size_t n_except);
int close_all_fds_without_malloc(const int except[], size_t n_except);
int close_all_fds_by_proc(const int except[], size_t n_except);
int close_all_fds_frugal(const int except[], size_t n_except);
int pack_fds(int fds[], size_t n);

View File

@ -116,7 +116,7 @@ typedef struct BootEntry {
EFI_STATUS (*call)(const struct BootEntry *entry, EFI_FILE *root_dir, EFI_HANDLE parent_image);
int tries_done;
int tries_left;
char16_t *path;
char16_t *directory;
char16_t *current_name;
char16_t *next_name;
unsigned profile;
@ -409,8 +409,8 @@ static void print_status(Config *config, char16_t *loaded_image_path) {
printf("counting boots: %ls\n", yes_no(entry->tries_left >= 0));
if (entry->tries_left >= 0) {
printf(" tries: %i left, %i done\n", entry->tries_left, entry->tries_done);
printf(" current path: %ls\\%ls\n", entry->path, entry->current_name);
printf(" next path: %ls\\%ls\n", entry->path, entry->next_name);
printf(" current path: %ls\\%ls\n", entry->directory, entry->current_name);
printf(" next path: %ls\\%ls\n", entry->directory, entry->next_name);
}
if (!ps_continue())
@ -991,7 +991,7 @@ static BootEntry* boot_entry_free(BootEntry *entry) {
free(entry->devicetree);
free(entry->options);
strv_free(entry->initrd);
free(entry->path);
free(entry->directory);
free(entry->current_name);
free(entry->next_name);
@ -1116,12 +1116,12 @@ static void config_defaults_load_from_file(Config *config, char *content) {
static void boot_entry_parse_tries(
BootEntry *entry,
const char16_t *path,
const char16_t *directory,
const char16_t *file,
const char16_t *suffix) {
assert(entry);
assert(path);
assert(directory);
assert(file);
assert(suffix);
@ -1167,7 +1167,7 @@ static void boot_entry_parse_tries(
entry->tries_left = tries_left;
entry->tries_done = tries_done;
entry->path = xstrdup16(path);
entry->directory = xstrdup16(directory);
entry->current_name = xstrdup16(file);
entry->next_name = xasprintf(
"%.*ls%" PRIu64 "-%" PRIu64 "%ls",
@ -1193,7 +1193,7 @@ static EFI_STATUS boot_entry_bump_counters(BootEntry *entry) {
if (entry->tries_left < 0)
return EFI_SUCCESS;
if (!entry->path || !entry->current_name || !entry->next_name)
if (!entry->directory || !entry->current_name || !entry->next_name)
return EFI_SUCCESS;
_cleanup_file_close_ EFI_FILE *root = NULL;
@ -1201,7 +1201,7 @@ static EFI_STATUS boot_entry_bump_counters(BootEntry *entry) {
if (err != EFI_SUCCESS)
return log_error_status(err, "Error opening entry root path: %m");
old_path = xasprintf("%ls\\%ls", entry->path, entry->current_name);
old_path = xasprintf("%ls\\%ls", entry->directory, entry->current_name);
err = root->Open(root, &handle, old_path, EFI_FILE_MODE_READ|EFI_FILE_MODE_WRITE, 0ULL);
if (err != EFI_SUCCESS)
@ -1225,7 +1225,7 @@ static EFI_STATUS boot_entry_bump_counters(BootEntry *entry) {
/* Let's tell the OS that we renamed this file, so that it knows what to rename to the counter-less name on
* success */
new_path = xasprintf("%ls\\%ls", entry->path, entry->next_name);
new_path = xasprintf("%ls\\%ls", entry->directory, entry->next_name);
efivar_set_str16(MAKE_GUID_PTR(LOADER), u"LoaderBootCountPath", new_path, 0);
/* If the file we just renamed is the loader path, then let's update that. */
@ -2769,7 +2769,7 @@ static void save_selected_entry(const Config *config, const BootEntry *entry) {
static EFI_STATUS call_secure_boot_enroll(const BootEntry *entry, EFI_FILE *root_dir, EFI_HANDLE parent_image) {
assert(entry);
return secure_boot_enroll_at(root_dir, entry->path, /* force= */ true, /* action= */ ENROLL_ACTION_REBOOT);
return secure_boot_enroll_at(root_dir, entry->directory, /* force= */ true, /* action= */ ENROLL_ACTION_REBOOT);
}
static EFI_STATUS secure_boot_discover_keys(Config *config, EFI_FILE *root_dir) {
@ -2808,7 +2808,7 @@ static EFI_STATUS secure_boot_discover_keys(Config *config, EFI_FILE *root_dir)
*entry = (BootEntry) {
.id = xasprintf("secure-boot-keys-%ls", dirent->FileName),
.title = xasprintf("Enroll Secure Boot keys: %ls", dirent->FileName),
.path = xasprintf("\\loader\\keys\\%ls", dirent->FileName),
.directory = xasprintf("\\loader\\keys\\%ls", dirent->FileName),
.type = LOADER_SECURE_BOOT_KEYS,
.tries_done = -1,
.tries_left = -1,
@ -2820,7 +2820,7 @@ static EFI_STATUS secure_boot_discover_keys(Config *config, EFI_FILE *root_dir)
strcaseeq16(dirent->FileName, u"auto"))
/* If we auto enroll successfully this call does not return.
* If it fails we still want to add other potential entries to the menu. */
secure_boot_enroll_at(root_dir, entry->path, config->secure_boot_enroll == ENROLL_FORCE, config->secure_boot_enroll_action);
secure_boot_enroll_at(root_dir, entry->directory, config->secure_boot_enroll == ENROLL_FORCE, config->secure_boot_enroll_action);
}
return EFI_SUCCESS;

View File

@ -46,10 +46,16 @@ static inline void *xmalloc_multiply(size_t n, size_t size) {
/* Use malloc attribute as this never returns p like userspace realloc. */
_malloc_ _alloc_(3) _returns_nonnull_ _warn_unused_result_
static inline void *xrealloc(void *p, size_t old_size, size_t new_size) {
assert(p || old_size == 0);
void *t = xmalloc(new_size);
new_size = MIN(old_size, new_size);
if (new_size > 0)
memcpy(t, p, new_size);
size_t size = MIN(old_size, new_size);
if (size > 0) {
assert(p);
memcpy(t, p, size);
}
free(p);
return t;
}

View File

@ -929,10 +929,6 @@ int verb_list(int argc, char *argv[], void *userdata) {
}
}
int verb_unlink(int argc, char *argv[], void *userdata) {
return verb_list(argc, argv, userdata);
}
int vl_method_list_boot_entries(sd_varlink *link, sd_json_variant *parameters, sd_varlink_method_flags_t flags, void *userdata) {
_cleanup_(boot_config_free) BootConfig config = BOOT_CONFIG_NULL;
dev_t esp_devid = 0, xbootldr_devid = 0;

View File

@ -4,6 +4,5 @@
int verb_status(int argc, char *argv[], void *userdata);
int verb_list(int argc, char *argv[], void *userdata);
int verb_unlink(int argc, char *argv[], void *userdata);
int vl_method_list_boot_entries(sd_varlink *link, sd_json_variant *parameters, sd_varlink_method_flags_t flags, void *userdata);

View File

@ -682,7 +682,7 @@ static int bootctl_main(int argc, char *argv[]) {
{ "kernel-identify", 2, 2, 0, verb_kernel_identify },
{ "kernel-inspect", 2, 2, 0, verb_kernel_inspect },
{ "list", VERB_ANY, 1, 0, verb_list },
{ "unlink", 2, 2, 0, verb_unlink },
{ "unlink", 2, 2, 0, verb_list },
{ "cleanup", VERB_ANY, 1, 0, verb_list },
{ "set-default", 2, 2, 0, verb_set_efivar },
{ "set-oneshot", 2, 2, 0, verb_set_efivar },

View File

@ -7,6 +7,7 @@
#include "bpf-foreign.h"
#include "bpf-program.h"
#include "cgroup.h"
#include "errno-util.h"
#include "hash-funcs.h"
#include "hashmap.h"
#include "siphash24.h"
@ -65,11 +66,8 @@ static int attach_programs(Unit *u, const char *path, Hashmap* foreign_by_key, u
HASHMAP_FOREACH_KEY(prog, key, foreign_by_key) {
r = bpf_program_cgroup_attach(prog, key->attach_type, path, attach_flags);
if (r < 0) {
log_unit_error_errno(u, r, "bpf-foreign: Attaching foreign BPF program to cgroup %s failed: %m", path);
if (ret >= 0)
ret = r;
}
if (r < 0)
RET_GATHER(ret, log_unit_error_errno(u, r, "bpf-foreign: Attaching foreign BPF program to cgroup %s failed: %m", path));
}
return ret;
@ -157,12 +155,8 @@ int bpf_foreign_install(Unit *u) {
if (r < 0)
return log_unit_error_errno(u, r, "bpf-foreign: Failed to get cgroup path: %m");
LIST_FOREACH(programs, p, cc->bpf_foreign_programs) {
r = bpf_foreign_prepare(u, p->attach_type, p->bpffs_path);
if (r < 0 && ret >= 0)
ret = r;
}
LIST_FOREACH(programs, p, cc->bpf_foreign_programs)
RET_GATHER(ret, bpf_foreign_prepare(u, p->attach_type, p->bpffs_path));
r = attach_programs(u, cgroup_path, crt->bpf_foreign_by_key, BPF_F_ALLOW_MULTI);
return ret < 0 ? ret : r;
return RET_GATHER(ret, attach_programs(u, cgroup_path, crt->bpf_foreign_by_key, BPF_F_ALLOW_MULTI));
}

View File

@ -3953,6 +3953,7 @@ static int manager_run_environment_generators(Manager *m) {
WITH_UMASK(0022)
r = execute_directories(
"environment-generators",
(const char* const*) paths,
DEFAULT_TIMEOUT_USEC,
gather_environment,
@ -4070,6 +4071,7 @@ static int manager_execute_generators(Manager *m, char * const *paths, bool remo
BLOCK_WITH_UMASK(0022);
return execute_directories(
"generators",
(const char* const*) paths,
DEFAULT_TIMEOUT_USEC,
/* callbacks= */ NULL, /* callback_args= */ NULL,

View File

@ -1621,16 +1621,11 @@ static int mount_image(
const ImagePolicy *image_policy) {
_cleanup_(extension_release_data_done) ExtensionReleaseData rdata = {};
_cleanup_free_ char *extension_name = NULL;
ImageClass required_class = _IMAGE_CLASS_INVALID;
int r;
assert(m);
r = path_extract_filename(mount_entry_source(m), &extension_name);
if (r < 0)
return log_debug_errno(r, "Failed to extract extension name from %s: %m", mount_entry_source(m));
if (m->mode == MOUNT_EXTENSION_IMAGE) {
r = parse_os_release(
empty_to_root(root_directory),

View File

@ -781,7 +781,7 @@ static void swap_enter_activating(Swap *s) {
}
}
r = exec_command_set(s->control_command, "/sbin/swapon", "--fixpgsz", NULL);
r = exec_command_set(s->control_command, SWAPON, "--fixpgsz", NULL);
if (r < 0) {
log_unit_warning_errno(UNIT(s), r, "Failed to initialize swapon command line: %m");
goto fail;
@ -826,7 +826,7 @@ static void swap_enter_deactivating(Swap *s) {
s->control_command = s->exec_command + SWAP_EXEC_DEACTIVATE;
r = exec_command_set(s->control_command,
"/sbin/swapoff",
SWAPOFF,
s->what,
NULL);
if (r < 0) {

View File

@ -2411,10 +2411,20 @@ static int unit_log_resources(Unit *u) {
iovec[n_iovec++] = IOVEC_MAKE_STRING(TAKE_PTR(t));
/* Format the CPU time for inclusion in the human language message string */
if (strextendf_with_separator(&message, ", ",
"Consumed %s CPU time",
FORMAT_TIMESPAN(cpu_nsec / NSEC_PER_USEC, USEC_PER_MSEC)) < 0)
return log_oom();
if (dual_timestamp_is_set(&u->inactive_exit_timestamp) &&
dual_timestamp_is_set(&u->inactive_enter_timestamp)) {
usec_t wall_clock_usec = usec_sub_unsigned(u->inactive_enter_timestamp.monotonic, u->inactive_exit_timestamp.monotonic);
if (strextendf_with_separator(&message, ", ",
"Consumed %s CPU time over %s wall clock time",
FORMAT_TIMESPAN(cpu_nsec / NSEC_PER_USEC, USEC_PER_MSEC),
FORMAT_TIMESPAN(wall_clock_usec, USEC_PER_MSEC)) < 0)
return log_oom();
} else {
if (strextendf_with_separator(&message, ", ",
"Consumed %s CPU time",
FORMAT_TIMESPAN(cpu_nsec / NSEC_PER_USEC, USEC_PER_MSEC)) < 0)
return log_oom();
}
log_level = raise_level(log_level,
cpu_nsec > MENTIONWORTHY_CPU_NSEC,

View File

@ -126,17 +126,37 @@ void pull_job_curl_on_finished(CurlGlue *g, CURL *curl, CURLcode result) {
if (!j || IN_SET(j->state, PULL_JOB_DONE, PULL_JOB_FAILED))
return;
if (result != CURLE_OK) {
r = log_error_errno(SYNTHETIC_ERRNO(EIO), "Transfer failed: %s", curl_easy_strerror(result));
goto finish;
}
code = curl_easy_getinfo(curl, CURLINFO_SCHEME, &scheme);
if (code != CURLE_OK || !scheme) {
r = log_error_errno(SYNTHETIC_ERRNO(EIO), "Failed to retrieve URL scheme.");
goto finish;
}
if (strcaseeq(scheme, "FILE") && result == CURLE_FILE_COULDNT_READ_FILE && j->on_not_found) {
_cleanup_free_ char *new_url = NULL;
/* This resource wasn't found, but the implementor wants to maybe let us know a new URL, query for it. */
r = j->on_not_found(j, &new_url);
if (r < 0)
goto finish;
if (r > 0) { /* A new url to use */
assert(new_url);
r = pull_job_restart(j, new_url);
if (r < 0)
goto finish;
return;
}
/* if this didn't work, handle like any other error below */
}
if (result != CURLE_OK) {
r = log_error_errno(SYNTHETIC_ERRNO(EIO), "Transfer failed: %s", curl_easy_strerror(result));
goto finish;
}
if (STRCASE_IN_SET(scheme, "HTTP", "HTTPS")) {
long status;

View File

@ -16,6 +16,7 @@ atomic_barrier
atomic_cmpxchg_32
bind
bpf
breakpoint
brk
cachectl
cacheflush
@ -113,6 +114,7 @@ futimesat
get_mempolicy
get_robust_list
get_thread_area
get_tls
getcpu
getcwd
getdents
@ -404,6 +406,7 @@ set_mempolicy_home_node
set_robust_list
set_thread_area
set_tid_address
set_tls
setdomainname
setfsgid
setfsgid32
@ -512,6 +515,8 @@ unlinkat
unshare
uretprobe
userfaultfd
usr26
usr32
ustat
utime
utimensat

View File

@ -16,9 +16,10 @@ atomic_barrier
atomic_cmpxchg_32
bind 282
bpf 386
breakpoint 983041
brk 45
cachectl
cacheflush
cacheflush 983042
cachestat 451
capget 184
capset 185
@ -113,6 +114,7 @@ futimesat 326
get_mempolicy 320
get_robust_list 339
get_thread_area
get_tls 983046
getcpu 345
getcwd 183
getdents 141
@ -404,6 +406,7 @@ set_mempolicy_home_node 450
set_robust_list 338
set_thread_area
set_tid_address 256
set_tls 983045
setdomainname 121
setfsgid 139
setfsgid32 216
@ -512,6 +515,8 @@ unlinkat 328
unshare 337
uretprobe
userfaultfd 388
usr26 983043
usr32 983044
ustat 62
utime
utimensat 348

View File

@ -16,6 +16,7 @@ atomic_barrier
atomic_cmpxchg_32
bind 200
bpf 280
breakpoint
brk 214
cachectl
cacheflush
@ -113,6 +114,7 @@ futimesat
get_mempolicy 236
get_robust_list 100
get_thread_area
get_tls
getcpu 168
getcwd 17
getdents
@ -404,6 +406,7 @@ set_mempolicy_home_node 450
set_robust_list 99
set_thread_area
set_tid_address 96
set_tls
setdomainname 162
setfsgid 152
setfsgid32
@ -512,6 +515,8 @@ unlinkat 35
unshare 97
uretprobe
userfaultfd 282
usr26
usr32
ustat
utime
utimensat 88

View File

@ -16,6 +16,7 @@ atomic_barrier
atomic_cmpxchg_32
bind 361
bpf 357
breakpoint
brk 45
cachectl
cacheflush
@ -113,6 +114,7 @@ futimesat 299
get_mempolicy 275
get_robust_list 312
get_thread_area 244
get_tls
getcpu 318
getcwd 183
getdents 141
@ -404,6 +406,7 @@ set_mempolicy_home_node 450
set_robust_list 311
set_thread_area 243
set_tid_address 258
set_tls
setdomainname 121
setfsgid 139
setfsgid32 216
@ -512,6 +515,8 @@ unlinkat 301
unshare 310
uretprobe
userfaultfd 374
usr26
usr32
ustat 62
utime 30
utimensat 320

View File

@ -16,6 +16,7 @@ atomic_barrier
atomic_cmpxchg_32
bind 200
bpf 280
breakpoint
brk 214
cachectl
cacheflush
@ -113,6 +114,7 @@ futimesat
get_mempolicy 236
get_robust_list 100
get_thread_area
get_tls
getcpu 168
getcwd 17
getdents
@ -404,6 +406,7 @@ set_mempolicy_home_node 450
set_robust_list 99
set_thread_area
set_tid_address 96
set_tls
setdomainname 162
setfsgid 152
setfsgid32
@ -512,6 +515,8 @@ unlinkat 35
unshare 97
uretprobe
userfaultfd 282
usr26
usr32
ustat
utime
utimensat 88

View File

@ -16,6 +16,7 @@ atomic_barrier 336
atomic_cmpxchg_32 335
bind 358
bpf 354
breakpoint
brk 45
cachectl
cacheflush 123
@ -113,6 +114,7 @@ futimesat 292
get_mempolicy 269
get_robust_list 305
get_thread_area 333
get_tls
getcpu 314
getcwd 183
getdents 141
@ -404,6 +406,7 @@ set_mempolicy_home_node 450
set_robust_list 304
set_thread_area 334
set_tid_address 253
set_tls
setdomainname 121
setfsgid 139
setfsgid32 216
@ -512,6 +515,8 @@ unlinkat 294
unshare 303
uretprobe
userfaultfd 373
usr26
usr32
ustat 62
utime 30
utimensat 316

View File

@ -16,6 +16,7 @@ atomic_barrier
atomic_cmpxchg_32
bind 5048
bpf 5315
breakpoint
brk 5012
cachectl 5198
cacheflush 5197
@ -113,6 +114,7 @@ futimesat 5251
get_mempolicy 5228
get_robust_list 5269
get_thread_area
get_tls
getcpu 5271
getcwd 5077
getdents 5076
@ -404,6 +406,7 @@ set_mempolicy_home_node 5450
set_robust_list 5268
set_thread_area 5242
set_tid_address 5212
set_tls
setdomainname 5166
setfsgid 5121
setfsgid32
@ -512,6 +515,8 @@ unlinkat 5253
unshare 5262
uretprobe
userfaultfd 5317
usr26
usr32
ustat 5133
utime 5130
utimensat 5275

View File

@ -16,6 +16,7 @@ atomic_barrier
atomic_cmpxchg_32
bind 6048
bpf 6319
breakpoint
brk 6012
cachectl 6198
cacheflush 6197
@ -113,6 +114,7 @@ futimesat 6255
get_mempolicy 6232
get_robust_list 6273
get_thread_area
get_tls
getcpu 6275
getcwd 6077
getdents 6076
@ -404,6 +406,7 @@ set_mempolicy_home_node 6450
set_robust_list 6272
set_thread_area 6246
set_tid_address 6213
set_tls
setdomainname 6166
setfsgid 6121
setfsgid32
@ -512,6 +515,8 @@ unlinkat 6257
unshare 6266
uretprobe
userfaultfd 6321
usr26
usr32
ustat 6133
utime 6130
utimensat 6279

View File

@ -16,6 +16,7 @@ atomic_barrier
atomic_cmpxchg_32
bind 4169
bpf 4355
breakpoint
brk 4045
cachectl 4148
cacheflush 4147
@ -113,6 +114,7 @@ futimesat 4292
get_mempolicy 4269
get_robust_list 4310
get_thread_area
get_tls
getcpu 4312
getcwd 4203
getdents 4141
@ -404,6 +406,7 @@ set_mempolicy_home_node 4450
set_robust_list 4309
set_thread_area 4283
set_tid_address 4252
set_tls
setdomainname 4121
setfsgid 4139
setfsgid32
@ -512,6 +515,8 @@ unlinkat 4294
unshare 4303
uretprobe
userfaultfd 4357
usr26
usr32
ustat 4062
utime 4030
utimensat 4316

View File

@ -16,6 +16,7 @@ atomic_barrier
atomic_cmpxchg_32
bind 22
bpf 341
breakpoint
brk 45
cachectl
cacheflush 356
@ -113,6 +114,7 @@ futimesat 279
get_mempolicy 261
get_robust_list 290
get_thread_area
get_tls
getcpu 296
getcwd 110
getdents 141
@ -404,6 +406,7 @@ set_mempolicy_home_node 450
set_robust_list 289
set_thread_area
set_tid_address 237
set_tls
setdomainname 121
setfsgid 139
setfsgid32
@ -512,6 +515,8 @@ unlinkat 281
unshare 288
uretprobe
userfaultfd 344
usr26
usr32
ustat 62
utime 30
utimensat 301

View File

@ -16,6 +16,7 @@ atomic_barrier
atomic_cmpxchg_32
bind 327
bpf 361
breakpoint
brk 45
cachectl
cacheflush
@ -113,6 +114,7 @@ futimesat 290
get_mempolicy 260
get_robust_list 299
get_thread_area
get_tls
getcpu 302
getcwd 182
getdents 141
@ -404,6 +406,7 @@ set_mempolicy_home_node 450
set_robust_list 300
set_thread_area
set_tid_address 232
set_tls
setdomainname 121
setfsgid 139
setfsgid32
@ -512,6 +515,8 @@ unlinkat 292
unshare 282
uretprobe
userfaultfd 364
usr26
usr32
ustat 62
utime 30
utimensat 304

View File

@ -16,6 +16,7 @@ atomic_barrier
atomic_cmpxchg_32
bind 327
bpf 361
breakpoint
brk 45
cachectl
cacheflush
@ -113,6 +114,7 @@ futimesat 290
get_mempolicy 260
get_robust_list 299
get_thread_area
get_tls
getcpu 302
getcwd 182
getdents 141
@ -404,6 +406,7 @@ set_mempolicy_home_node 450
set_robust_list 300
set_thread_area
set_tid_address 232
set_tls
setdomainname 121
setfsgid 139
setfsgid32
@ -512,6 +515,8 @@ unlinkat 292
unshare 282
uretprobe
userfaultfd 364
usr26
usr32
ustat 62
utime 30
utimensat 304

View File

@ -16,6 +16,7 @@ atomic_barrier
atomic_cmpxchg_32
bind 200
bpf 280
breakpoint
brk 214
cachectl
cacheflush
@ -113,6 +114,7 @@ futimesat
get_mempolicy 236
get_robust_list 100
get_thread_area
get_tls
getcpu 168
getcwd 17
getdents
@ -404,6 +406,7 @@ set_mempolicy_home_node 450
set_robust_list 99
set_thread_area
set_tid_address 96
set_tls
setdomainname 162
setfsgid 152
setfsgid32
@ -512,6 +515,8 @@ unlinkat 35
unshare 97
uretprobe
userfaultfd 282
usr26
usr32
ustat
utime
utimensat

View File

@ -16,6 +16,7 @@ atomic_barrier
atomic_cmpxchg_32
bind 200
bpf 280
breakpoint
brk 214
cachectl
cacheflush
@ -113,6 +114,7 @@ futimesat
get_mempolicy 236
get_robust_list 100
get_thread_area
get_tls
getcpu 168
getcwd 17
getdents
@ -404,6 +406,7 @@ set_mempolicy_home_node 450
set_robust_list 99
set_thread_area
set_tid_address 96
set_tls
setdomainname 162
setfsgid 152
setfsgid32
@ -512,6 +515,8 @@ unlinkat 35
unshare 97
uretprobe
userfaultfd 282
usr26
usr32
ustat
utime
utimensat 88

View File

@ -16,6 +16,7 @@ atomic_barrier
atomic_cmpxchg_32
bind 361
bpf 351
breakpoint
brk 45
cachectl
cacheflush
@ -113,6 +114,7 @@ futimesat 292
get_mempolicy 269
get_robust_list 305
get_thread_area
get_tls
getcpu 311
getcwd 183
getdents 141
@ -404,6 +406,7 @@ set_mempolicy_home_node 450
set_robust_list 304
set_thread_area
set_tid_address 252
set_tls
setdomainname 121
setfsgid 139
setfsgid32 216
@ -512,6 +515,8 @@ unlinkat 294
unshare 303
uretprobe
userfaultfd 355
usr26
usr32
ustat 62
utime 30
utimensat 315

View File

@ -16,6 +16,7 @@ atomic_barrier
atomic_cmpxchg_32
bind 361
bpf 351
breakpoint
brk 45
cachectl
cacheflush
@ -113,6 +114,7 @@ futimesat 292
get_mempolicy 269
get_robust_list 305
get_thread_area
get_tls
getcpu 311
getcwd 183
getdents 141
@ -404,6 +406,7 @@ set_mempolicy_home_node 450
set_robust_list 304
set_thread_area
set_tid_address 252
set_tls
setdomainname 121
setfsgid 216
setfsgid32
@ -512,6 +515,8 @@ unlinkat 294
unshare 303
uretprobe
userfaultfd 355
usr26
usr32
ustat 62
utime 30
utimensat 315

View File

@ -16,6 +16,7 @@ atomic_barrier
atomic_cmpxchg_32
bind 341
bpf 375
breakpoint
brk 45
cachectl
cacheflush 123
@ -113,6 +114,7 @@ futimesat 299
get_mempolicy 275
get_robust_list 312
get_thread_area
get_tls
getcpu 318
getcwd 183
getdents 141
@ -404,6 +406,7 @@ set_mempolicy_home_node 450
set_robust_list 311
set_thread_area
set_tid_address 258
set_tls
setdomainname 121
setfsgid 139
setfsgid32 216
@ -512,6 +515,8 @@ unlinkat 301
unshare 310
uretprobe
userfaultfd 377
usr26
usr32
ustat 62
utime 30
utimensat 320

View File

@ -16,6 +16,7 @@ atomic_barrier
atomic_cmpxchg_32
bind 353
bpf 349
breakpoint
brk 17
cachectl
cacheflush
@ -113,6 +114,7 @@ futimesat 288
get_mempolicy 304
get_robust_list 301
get_thread_area
get_tls
getcpu 308
getcwd 119
getdents 174
@ -404,6 +406,7 @@ set_mempolicy_home_node 450
set_robust_list 300
set_thread_area
set_tid_address 166
set_tls
setdomainname 163
setfsgid 229
setfsgid32 94
@ -512,6 +515,8 @@ unlinkat 290
unshare 299
uretprobe
userfaultfd 352
usr26
usr32
ustat 168
utime 30
utimensat 310

View File

@ -16,6 +16,7 @@ atomic_barrier
atomic_cmpxchg_32
bind 49
bpf 321
breakpoint
brk 12
cachectl
cacheflush
@ -113,6 +114,7 @@ futimesat 261
get_mempolicy 239
get_robust_list 274
get_thread_area 211
get_tls
getcpu 309
getcwd 79
getdents 78
@ -404,6 +406,7 @@ set_mempolicy_home_node 450
set_robust_list 273
set_thread_area 205
set_tid_address 218
set_tls
setdomainname 171
setfsgid 123
setfsgid32
@ -512,6 +515,8 @@ unlinkat 263
unshare 272
uretprobe 335
userfaultfd 323
usr26
usr32
ustat 136
utime 132
utimensat 280

View File

@ -1061,7 +1061,7 @@ static int context_execute(Context *c) {
}
ret = execute_strv(
/* name = */ NULL,
"plugins",
c->plugins,
/* root = */ NULL,
USEC_INFINITY,

View File

@ -150,8 +150,8 @@ int device_set_syspath(sd_device *device, const char *_syspath, bool verify) {
r = chase(_syspath, NULL, 0, &syspath, &fd);
if (r == -ENOENT)
/* the device does not exist (any more?) */
return log_debug_errno(SYNTHETIC_ERRNO(ENODEV),
"sd-device: Failed to chase symlinks in \"%s\".", _syspath);
return log_trace_errno(SYNTHETIC_ERRNO(ENODEV),
"sd-device: Device \"%s\" not found.", _syspath);
if (r < 0)
return log_debug_errno(r, "sd-device: Failed to get target of '%s': %m", _syspath);

View File

@ -678,7 +678,6 @@ static const char* const user_env_generator_paths[] = {
};
char** generator_binary_paths_internal(RuntimeScope scope, bool env_generator) {
static const struct {
const char *env_name;
const char * const *paths[_RUNTIME_SCOPE_MAX];

View File

@ -1152,7 +1152,7 @@ static int register_session(
JSON_BUILD_PAIR_STRING_NON_EMPTY("RemoteHost", c->remote_host));
if (r < 0)
return pam_syslog_errno(handle, LOG_ERR, r,
"Failed to register session: %s", error_id);
"Failed to issue io.systemd.Login.CreateSession varlink call: %m");
if (streq_ptr(error_id, "io.systemd.Login.AlreadySessionMember")) {
/* We are already in a session, don't do anything */
pam_debug_syslog(handle, debug, "Not creating session: %s", error_id);
@ -1161,7 +1161,7 @@ static int register_session(
}
if (error_id)
return pam_syslog_errno(handle, LOG_ERR, sd_varlink_error_to_errno(error_id, vreply),
"Failed to issue CreateSession() varlink call: %s", error_id);
"Varlink call io.systemd.Login.CreateSession failed: %s", error_id);
struct {
const char *id;
@ -1859,10 +1859,11 @@ _public_ PAM_EXTERN int pam_sm_close_session(
&error_id,
SD_JSON_BUILD_PAIR_STRING("Id", id));
if (r < 0)
return pam_syslog_errno(handle, LOG_ERR, r, "Failed to register session: %s", error_id);
return pam_syslog_errno(handle, LOG_ERR, r,
"Failed to issue io.systemd.Login.ReleaseSession varlink call: %m");
if (error_id)
return pam_syslog_errno(handle, LOG_ERR, sd_varlink_error_to_errno(error_id, vreply),
"Failed to issue ReleaseSession() varlink call: %s", error_id);
"Varlink call io.systemd.Login.ReleaseSession failed: %s", error_id);
done = true;
}

View File

@ -1,6 +1,5 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "sd-bus.h"
#include "sd-netlink.h"
#include "sd-network.h"
@ -14,7 +13,6 @@
#include "networkctl-util.h"
int list_links(int argc, char *argv[], void *userdata) {
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
_cleanup_(sd_netlink_unrefp) sd_netlink *rtnl = NULL;
_cleanup_(link_info_array_freep) LinkInfo *links = NULL;
_cleanup_(table_unrefp) Table *table = NULL;
@ -25,10 +23,6 @@ int list_links(int argc, char *argv[], void *userdata) {
if (r != 0)
return r;
r = acquire_bus(&bus);
if (r < 0)
return r;
r = sd_netlink_open(&rtnl);
if (r < 0)
return log_error_errno(r, "Failed to connect to netlink: %m");

View File

@ -73,6 +73,7 @@ Files.PrivateUsersOwnership, config_parse_userns_ownership, 0,
Files.BindUser, config_parse_bind_user, 0, offsetof(Settings, bind_user)
Files.BindUserShell, config_parse_bind_user_shell, 0, 0
Network.Private, config_parse_tristate, 0, offsetof(Settings, private_network)
Network.NamespacePath, config_parse_path, 0, offsetof(Settings, network_namespace_path)
Network.Interface, config_parse_network_iface_pair, 0, offsetof(Settings, network_interfaces)
Network.MACVLAN, config_parse_macvlan_iface_pair, 0, offsetof(Settings, network_macvlan)
Network.IPVLAN, config_parse_ipvlan_iface_pair, 0, offsetof(Settings, network_ipvlan)

View File

@ -202,6 +202,7 @@ static AppendMode arg_append_fstab = APPEND_NO;
static char *arg_generate_fstab = NULL;
static char *arg_generate_crypttab = NULL;
static Set *arg_verity_settings = NULL;
static bool arg_relax_copy_block_security = false;
STATIC_DESTRUCTOR_REGISTER(arg_node, freep);
STATIC_DESTRUCTOR_REGISTER(arg_root, freep);
@ -8737,6 +8738,9 @@ static int parse_argv(int argc, char *argv[], X509 **ret_certificate, EVP_PKEY *
r = parse_path_argument(optarg, /* suppress_root= */ false, &arg_image);
if (r < 0)
return r;
arg_relax_copy_block_security = false;
break;
case ARG_IMAGE_POLICY:
@ -9157,6 +9161,8 @@ static int parse_argv(int argc, char *argv[], X509 **ret_certificate, EVP_PKEY *
arg_root = strdup("/sysusr");
if (!arg_root)
return log_oom();
arg_relax_copy_block_security = true;
}
if (argc > optind) {
@ -9831,7 +9837,9 @@ static int run(int argc, char *argv[]) {
r = context_open_copy_block_paths(
context,
loop_device ? loop_device->devno : /* if --image= is specified, only allow partitions on the loopback device */
arg_root && !arg_image ? 0 : /* if --root= is specified, don't accept any block device */
/* if --root= is specified, don't accept any block device, unless it
* was set automatically because we are in the initrd */
arg_root && !arg_image && !arg_relax_copy_block_security ? 0 :
(dev_t) -1); /* if neither is specified, make no restrictions */
if (r < 0)
return r;

View File

@ -74,33 +74,47 @@
/* how many times to wait for the device nodes to appear */
#define N_DEVICE_NODE_LIST_ATTEMPTS 10
int dissect_fstype_ok(const char *fstype) {
static int allowed_fstypes(char ***ret_strv) {
_cleanup_strv_free_ char **l = NULL;
const char *e;
bool b;
assert(ret_strv);
e = secure_getenv("SYSTEMD_DISSECT_FILE_SYSTEMS");
if (e) {
l = strv_split(e, ":");
if (!l)
return -ENOMEM;
} else {
l = strv_new("btrfs",
"erofs",
"ext4",
"f2fs",
"squashfs",
"vfat",
"xfs");
if (!l)
return -ENOMEM;
}
*ret_strv = TAKE_PTR(l);
return 0;
}
int dissect_fstype_ok(const char *fstype) {
_cleanup_strv_free_ char **l = NULL;
int r;
/* When we automatically mount file systems, be a bit conservative by default what we are willing to
* mount, just as an extra safety net to not mount with badly maintained legacy file system
* drivers. */
e = secure_getenv("SYSTEMD_DISSECT_FILE_SYSTEMS");
if (e) {
_cleanup_strv_free_ char **l = NULL;
r = allowed_fstypes(&l);
if (r < 0)
return r;
l = strv_split(e, ":");
if (!l)
return -ENOMEM;
b = strv_contains(l, fstype);
} else
b = STR_IN_SET(fstype,
"btrfs",
"erofs",
"ext4",
"f2fs",
"squashfs",
"vfat",
"xfs");
if (b)
if (strv_contains(l, fstype))
return true;
log_debug("File system type '%s' is not allowed to be mounted as result of automatic dissection.", fstype);
@ -177,11 +191,37 @@ int probe_sector_size_prefer_ioctl(int fd, uint32_t *ret) {
return probe_sector_size(fd, ret);
}
#if HAVE_BLKID
static int probe_blkid_filter(blkid_probe p) {
_cleanup_strv_free_ char **fstypes = NULL;
int r;
assert(p);
r = allowed_fstypes(&fstypes);
if (r < 0)
return r;
errno = 0;
r = blkid_probe_filter_superblocks_type(p, BLKID_FLTR_ONLYIN, fstypes);
if (r != 0)
return errno_or_else(EINVAL);
errno = 0;
r = blkid_probe_filter_superblocks_usage(p, BLKID_FLTR_NOTIN, BLKID_USAGE_RAID);
if (r != 0)
return errno_or_else(EINVAL);
return 0;
}
#endif
int probe_filesystem_full(
int fd,
const char *path,
uint64_t offset,
uint64_t size,
bool restrict_fstypes,
char **ret_fstype) {
/* Try to find device content type and return it in *ret_fstype. If nothing is found,
@ -221,6 +261,12 @@ int probe_filesystem_full(
if (!b)
return -ENOMEM;
if (restrict_fstypes) {
r = probe_blkid_filter(b);
if (r < 0)
return r;
}
/* The Linux kernel maintains separate block device caches for main ("whole") and partition block
* devices, which means making a change to one might not be reflected immediately when reading via
* the other. That's massively confusing when mixing accesses to such devices. Let's address this in
@ -387,9 +433,9 @@ static int dissected_image_probe_filesystems(
/* If we have an fd referring to the partition block device, use that. Otherwise go
* via the whole block device or backing regular file, and read via offset. */
if (p->mount_node_fd >= 0)
r = probe_filesystem_full(p->mount_node_fd, p->node, 0, UINT64_MAX, &p->fstype);
r = probe_filesystem_full(p->mount_node_fd, p->node, 0, UINT64_MAX, /* bool restrict_fstypes= */ true, &p->fstype);
else
r = probe_filesystem_full(fd, p->node, p->offset, p->size, &p->fstype);
r = probe_filesystem_full(fd, p->node, p->offset, p->size, /* bool restrict_fstypes= */ true, &p->fstype);
if (r < 0)
return r;
}
@ -751,6 +797,10 @@ static int dissect_image(
if (!b)
return -ENOMEM;
r = probe_blkid_filter(b);
if (r < 0)
return r;
errno = 0;
r = blkid_probe_set_device(b, fd, 0, 0);
if (r != 0)
@ -3053,7 +3103,7 @@ int dissected_image_decrypt(
}
if (!p->decrypted_fstype && p->mount_node_fd >= 0 && p->decrypted_node) {
r = probe_filesystem_full(p->mount_node_fd, p->decrypted_node, 0, UINT64_MAX, &p->decrypted_fstype);
r = probe_filesystem_full(p->mount_node_fd, p->decrypted_node, 0, UINT64_MAX, /* bool restrict_fstypes= */ true, &p->decrypted_fstype);
if (r < 0 && r != -EUCLEAN)
return r;
}

View File

@ -156,9 +156,9 @@ MountOptions* mount_options_free_all(MountOptions *options);
DEFINE_TRIVIAL_CLEANUP_FUNC(MountOptions*, mount_options_free_all);
const char* mount_options_from_designator(const MountOptions *options, PartitionDesignator designator);
int probe_filesystem_full(int fd, const char *path, uint64_t offset, uint64_t size, char **ret_fstype);
int probe_filesystem_full(int fd, const char *path, uint64_t offset, uint64_t size, bool restrict_fstypes, char **ret_fstype);
static inline int probe_filesystem(const char *path, char **ret_fstype) {
return probe_filesystem_full(-1, path, 0, UINT64_MAX, ret_fstype);
return probe_filesystem_full(-1, path, 0, UINT64_MAX, /* bool restrict_fstypes= */ false, ret_fstype);
}
int dissect_log_error(int log_level, int r, const char *name, const VeritySettings *verity);

View File

@ -243,13 +243,13 @@ int execute_strv(
pid_t executor_pid;
int r;
assert(name);
assert(!FLAGS_SET(flags, EXEC_DIR_PARALLEL | EXEC_DIR_SKIP_REMAINING));
if (strv_isempty(paths))
return 0;
if (callbacks) {
assert(name);
assert(callbacks[STDOUT_GENERATE]);
assert(callbacks[STDOUT_COLLECT]);
assert(callbacks[STDOUT_CONSUME]);
@ -257,14 +257,16 @@ int execute_strv(
fd = open_serialization_fd(name);
if (fd < 0)
return log_error_errno(fd, "Failed to open serialization file: %m");
return log_error_errno(fd, "Failed to open serialization file for %s: %m", name);
}
/* Executes all binaries in the directories serially or in parallel and waits for
* them to finish. Optionally a timeout is applied. If a file with the same name
* exists in more than one directory, the earliest one wins. */
r = safe_fork("(sd-exec-strv)", FORK_RESET_SIGNALS|FORK_DEATHSIG_SIGTERM|FORK_LOG, &executor_pid);
const char *process_name = strjoina("(", name, ")");
r = safe_fork(process_name, FORK_RESET_SIGNALS|FORK_DEATHSIG_SIGTERM|FORK_LOG, &executor_pid);
if (r < 0)
return r;
if (r == 0) {
@ -272,7 +274,7 @@ int execute_strv(
_exit(r < 0 ? EXIT_FAILURE : r);
}
r = wait_for_terminate_and_check("(sd-exec-strv)", executor_pid, 0);
r = wait_for_terminate_and_check(process_name, executor_pid, 0);
if (r < 0)
return r;
if (!FLAGS_SET(flags, EXEC_DIR_IGNORE_ERRORS) && r > 0)
@ -283,16 +285,17 @@ int execute_strv(
r = finish_serialization_fd(fd);
if (r < 0)
return log_error_errno(r, "Failed to finish serialization fd: %m");
return log_error_errno(r, "Failed to finish serialization fd for %s: %m", name);
r = callbacks[STDOUT_CONSUME](TAKE_FD(fd), callback_args[STDOUT_CONSUME]);
if (r < 0)
return log_error_errno(r, "Failed to parse returned data: %m");
return log_error_errno(r, "Failed to parse returned data for %s: %m", name);
return 0;
}
int execute_directories(
const char *name,
const char * const *directories,
usec_t timeout,
gather_stdout_callback_t const callbacks[_STDOUT_CONSUME_MAX],
@ -302,9 +305,9 @@ int execute_directories(
ExecDirFlags flags) {
_cleanup_strv_free_ char **paths = NULL;
_cleanup_free_ char *name = NULL;
int r;
assert(name);
assert(!strv_isempty((char* const*) directories));
r = conf_files_list_strv(
@ -314,19 +317,13 @@ int execute_directories(
CONF_FILES_EXECUTABLE|CONF_FILES_REGULAR|CONF_FILES_FILTER_MASKED,
directories);
if (r < 0)
return log_error_errno(r, "Failed to enumerate executables: %m");
return log_error_errno(r, "%s: failed to enumerate executables: %m", name);
if (strv_isempty(paths)) {
log_debug("No executables found.");
log_debug("%s: no executables found.", name);
return 0;
}
if (callbacks) {
r = path_extract_filename(directories[0], &name);
if (r < 0)
return log_error_errno(r, "Failed to extract file name from '%s': %m", directories[0]);
}
return execute_strv(name, paths, /* root = */ NULL, timeout, callbacks, callback_args, argv, envp, flags);
}

View File

@ -32,6 +32,7 @@ int execute_strv(
ExecDirFlags flags);
int execute_directories(
const char *name,
const char * const *directories,
usec_t timeout,
gather_stdout_callback_t const callbacks[_STDOUT_CONSUME_MAX],

View File

@ -208,12 +208,6 @@ static int mount_one(const MountPoint *p, bool relabel) {
}
}
log_debug("Mounting %s to %s of type %s with options %s.",
p->what,
p->where,
p->type,
o ?: "''");
r = mount_verbose_full(priority, p->what, p->where, p->type, p->flags, o, FLAGS_SET(p->mode, MNT_FOLLOW_SYMLINK));
if (r < 0)
return FLAGS_SET(p->mode, MNT_FATAL) ? r : 0;

View File

@ -4,11 +4,16 @@
static SD_VARLINK_DEFINE_METHOD(
Extend,
SD_VARLINK_FIELD_COMMENT("PCR number to extend, in range of 0…23"),
SD_VARLINK_DEFINE_INPUT(pcr, SD_VARLINK_INT, 0),
SD_VARLINK_FIELD_COMMENT("Text string to measure. (Specify either this, or the 'data' field below, not both)"),
SD_VARLINK_DEFINE_INPUT(text, SD_VARLINK_STRING, SD_VARLINK_NULLABLE),
SD_VARLINK_FIELD_COMMENT("Binary data to measure, encoded in Base64. (Specify either this, or the 'text' field above, not both)"),
SD_VARLINK_DEFINE_INPUT(data, SD_VARLINK_STRING, SD_VARLINK_NULLABLE));
SD_VARLINK_DEFINE_INTERFACE(
io_systemd_PCRExtend,
"io.systemd.PCRExtend",
SD_VARLINK_INTERFACE_COMMENT("TPM PCR Extension APIs"),
SD_VARLINK_SYMBOL_COMMENT("Measure some text or binary data into a PCR"),
&vl_method_Extend);

View File

@ -575,7 +575,15 @@ int main(int argc, char *argv[]) {
arg_verb,
NULL,
};
(void) execute_directories(dirs, DEFAULT_TIMEOUT_USEC, NULL, NULL, (char**) arguments, NULL, EXEC_DIR_PARALLEL | EXEC_DIR_IGNORE_ERRORS);
(void) execute_directories(
"system-shutdown",
dirs,
DEFAULT_TIMEOUT_USEC,
/* callbacks= */ NULL,
/* callback_args= */ NULL,
(char**) arguments,
/* envp= */ NULL,
EXEC_DIR_PARALLEL | EXEC_DIR_IGNORE_ERRORS);
(void) rlimit_nofile_safe();

View File

@ -311,7 +311,15 @@ static int execute(
if (setenv("SYSTEMD_SLEEP_ACTION", action, /* overwrite = */ 1) < 0)
log_warning_errno(errno, "Failed to set SYSTEMD_SLEEP_ACTION=%s, ignoring: %m", action);
(void) execute_directories(dirs, DEFAULT_TIMEOUT_USEC, NULL, NULL, (char **) arguments, NULL, EXEC_DIR_PARALLEL | EXEC_DIR_IGNORE_ERRORS);
(void) execute_directories(
"system-sleep",
dirs,
DEFAULT_TIMEOUT_USEC,
/* callbacks= */ NULL,
/* callback_args= */ NULL,
(char **) arguments,
/* envp= */ NULL,
EXEC_DIR_PARALLEL | EXEC_DIR_IGNORE_ERRORS);
(void) lock_all_homes();
log_struct(LOG_INFO,
@ -332,8 +340,15 @@ static int execute(
LOG_ITEM("SLEEP=%s", sleep_operation_to_string(arg_operation)));
arguments[1] = "post";
(void) execute_directories(dirs, DEFAULT_TIMEOUT_USEC, NULL, NULL, (char **) arguments, NULL, EXEC_DIR_PARALLEL | EXEC_DIR_IGNORE_ERRORS);
(void) execute_directories(
"system-sleep",
dirs,
DEFAULT_TIMEOUT_USEC,
/* callbacks= */ NULL,
/* callback_args= */ NULL,
(char **) arguments,
/* envp= */ NULL,
EXEC_DIR_PARALLEL | EXEC_DIR_IGNORE_ERRORS);
if (r >= 0)
return 0;

View File

@ -17,6 +17,7 @@
#include "bus-util.h"
#include "capability-util.h"
#include "chase.h"
#include "conf-parser.h"
#include "devnum-util.h"
#include "discover-image.h"
#include "dissect-image.h"
@ -148,6 +149,37 @@ static int parse_mutable_mode(const char *p) {
return mutable_mode_from_string(p);
}
static DEFINE_CONFIG_PARSE_ENUM(config_parse_mutable_mode, mutable_mode, MutableMode);
static int parse_config_file(ImageClass image_class) {
const char *section = image_class == IMAGE_SYSEXT ? "SysExt" : "ConfExt";
const ConfigTableItem items[] = {
{ section, "Mutable", config_parse_mutable_mode, 0, &arg_mutable },
{ section, "ImagePolicy", config_parse_image_policy, 0, &arg_image_policy },
{}
};
_cleanup_free_ char *config_file = NULL;
int r;
config_file = strjoin("systemd/", image_class_info[image_class].short_identifier, ".conf");
if (!config_file)
return log_oom();
r = config_parse_standard_file_with_dropins_full(
arg_root,
config_file,
image_class == IMAGE_SYSEXT ? "SysExt\0" : "ConfExt\0",
config_item_table_lookup, items,
CONFIG_PARSE_WARN,
/* userdata = */ NULL,
/* ret_stats_by_path = */ NULL,
/* ret_dropin_files = */ NULL);
if (r < 0)
return r;
return 0;
}
static int is_our_mount_point(
ImageClass image_class,
const char *p) {
@ -1830,10 +1862,7 @@ static int merge_subprocess(
if (r < 0)
return r;
r = dissected_image_decrypt_interactively(
m, NULL,
&verity_settings,
flags);
r = dissected_image_decrypt(m, /* passphrase= */ NULL, &verity_settings, flags);
if (r < 0)
return r;
@ -2593,6 +2622,7 @@ static int run(int argc, char *argv[]) {
arg_image_class = invoked_as(argv, "systemd-confext") ? IMAGE_CONFEXT : IMAGE_SYSEXT;
/* Parse environment variable first */
env_var = getenv(image_class_info[arg_image_class].mode_env);
if (env_var) {
r = parse_mutable_mode(env_var);
@ -2603,6 +2633,12 @@ static int run(int argc, char *argv[]) {
arg_mutable = r;
}
/* Parse configuration file */
r = parse_config_file(arg_image_class);
if (r < 0)
log_warning_errno(r, "Failed to parse global config file, ignoring: %m");
/* Parse command line */
r = parse_argv(argc, argv);
if (r <= 0)
return r;

View File

@ -117,9 +117,9 @@ static void test_execute_directory_one(bool gather_stdout) {
return;
if (gather_stdout)
execute_directories(dirs, DEFAULT_TIMEOUT_USEC, ignore_stdout, ignore_stdout_args, NULL, NULL, EXEC_DIR_PARALLEL | EXEC_DIR_IGNORE_ERRORS);
execute_directories("test", dirs, DEFAULT_TIMEOUT_USEC, ignore_stdout, ignore_stdout_args, NULL, NULL, EXEC_DIR_PARALLEL | EXEC_DIR_IGNORE_ERRORS);
else
execute_directories(dirs, DEFAULT_TIMEOUT_USEC, NULL, NULL, NULL, NULL, EXEC_DIR_PARALLEL | EXEC_DIR_IGNORE_ERRORS);
execute_directories("test", dirs, DEFAULT_TIMEOUT_USEC, NULL, NULL, NULL, NULL, EXEC_DIR_PARALLEL | EXEC_DIR_IGNORE_ERRORS);
assert_se(chdir(tmp_lo) == 0);
assert_se(access("it_works", F_OK) >= 0);
@ -189,7 +189,9 @@ TEST(execution_order) {
if (access(name, X_OK) < 0 && ERRNO_IS_PRIVILEGE(errno))
return;
execute_directories(dirs, DEFAULT_TIMEOUT_USEC, ignore_stdout, ignore_stdout_args, NULL, NULL, EXEC_DIR_PARALLEL | EXEC_DIR_IGNORE_ERRORS);
execute_directories(__func__,
dirs, DEFAULT_TIMEOUT_USEC, ignore_stdout, ignore_stdout_args, NULL, NULL,
EXEC_DIR_PARALLEL | EXEC_DIR_IGNORE_ERRORS);
assert_se(read_full_file(output, &contents, NULL) >= 0);
ASSERT_STREQ(contents, "30-override\n80-foo\n90-bar\nlast\n");
@ -270,7 +272,8 @@ TEST(stdout_gathering) {
if (access(name, X_OK) < 0 && ERRNO_IS_PRIVILEGE(errno))
return;
r = execute_directories(dirs, DEFAULT_TIMEOUT_USEC, gather_stdouts, args, NULL, NULL,
r = execute_directories(__func__,
dirs, DEFAULT_TIMEOUT_USEC, gather_stdouts, args, NULL, NULL,
EXEC_DIR_PARALLEL | EXEC_DIR_IGNORE_ERRORS);
assert_se(r >= 0);
@ -337,7 +340,9 @@ TEST(environment_gathering) {
if (access(name, X_OK) < 0 && ERRNO_IS_PRIVILEGE(errno))
return;
r = execute_directories(dirs, DEFAULT_TIMEOUT_USEC, gather_environment, args, NULL, NULL, EXEC_DIR_PARALLEL | EXEC_DIR_IGNORE_ERRORS);
r = execute_directories(__func__,
dirs, DEFAULT_TIMEOUT_USEC, gather_environment, args, NULL, NULL,
EXEC_DIR_PARALLEL | EXEC_DIR_IGNORE_ERRORS);
assert_se(r >= 0);
STRV_FOREACH(p, env)
@ -353,7 +358,9 @@ TEST(environment_gathering) {
env = strv_new("PATH=" DEFAULT_PATH_WITHOUT_SBIN);
assert_se(env);
r = execute_directories(dirs, DEFAULT_TIMEOUT_USEC, gather_environment, args, NULL, env, EXEC_DIR_PARALLEL | EXEC_DIR_IGNORE_ERRORS);
r = execute_directories(__func__,
dirs, DEFAULT_TIMEOUT_USEC, gather_environment, args, NULL, env,
EXEC_DIR_PARALLEL | EXEC_DIR_IGNORE_ERRORS);
assert_se(r >= 0);
STRV_FOREACH(p, env)
@ -399,7 +406,8 @@ TEST(error_catching) {
if (access(name, X_OK) < 0 && ERRNO_IS_PRIVILEGE(errno))
return;
r = execute_directories(dirs, DEFAULT_TIMEOUT_USEC,
r = execute_directories(__func__,
dirs, DEFAULT_TIMEOUT_USEC,
/* callbacks = */ NULL, /* callback_args = */ NULL,
/* argv = */ NULL, /* envp = */ NULL, /* flags = */ 0);

View File

@ -260,7 +260,7 @@ static size_t validate_fds(
return c; /* Return number of fds >= 0 in the array */
}
static void test_close_all_fds_inner(void) {
static void test_close_all_fds_inner(int (*func)(const int except[], size_t n_except)) {
_cleanup_free_ int *fds = NULL, *keep = NULL;
size_t n_fds, n_keep;
int max_fd;
@ -320,13 +320,13 @@ static void test_close_all_fds_inner(void) {
log_settle_target();
/* Close all but the ones to keep */
assert_se(close_all_fds(keep, n_keep) >= 0);
ASSERT_OK(func(keep, n_keep));
assert_se(validate_fds(false, fds, n_fds) == n_fds - n_keep);
assert_se(validate_fds(true, keep, n_keep) == n_keep);
/* Close everything else too! */
assert_se(close_all_fds(NULL, 0) >= 0);
ASSERT_OK(func(NULL, 0));
assert_se(validate_fds(false, fds, n_fds) == n_fds - n_keep);
assert_se(validate_fds(false, keep, n_keep) == n_keep);
@ -335,95 +335,32 @@ static void test_close_all_fds_inner(void) {
log_open();
}
static int seccomp_prohibit_close_range(void) {
#if HAVE_SECCOMP && defined(__SNR_close_range)
_cleanup_(seccomp_releasep) scmp_filter_ctx seccomp = NULL;
int r;
r = seccomp_init_for_arch(&seccomp, SCMP_ARCH_NATIVE, SCMP_ACT_ALLOW);
if (r < 0)
return log_warning_errno(r, "Failed to acquire seccomp context, ignoring: %m");
r = seccomp_rule_add_exact(
seccomp,
SCMP_ACT_ERRNO(EPERM),
SCMP_SYS(close_range),
0);
if (r < 0)
return log_warning_errno(r, "Failed to add close_range() rule, ignoring: %m");
r = seccomp_load(seccomp);
if (r < 0)
return log_warning_errno(r, "Failed to apply close_range() restrictions, ignoring: %m");
return 0;
#else
return log_warning_errno(SYNTHETIC_ERRNO(EOPNOTSUPP), "Seccomp support or close_range() syscall definition not available.");
#endif
}
TEST(close_all_fds) {
int r;
/* Runs the test four times. Once as is. Once with close_range() syscall blocked via seccomp, once
* with /proc/ overmounted, and once with the combination of both. This should trigger all fallbacks
* in the close_range_all() function. */
r = safe_fork("(caf-plain)", FORK_CLOSE_ALL_FDS|FORK_DEATHSIG_SIGTERM|FORK_LOG|FORK_WAIT, NULL);
ASSERT_OK(r = safe_fork("(caf-plain)", FORK_CLOSE_ALL_FDS|FORK_DEATHSIG_SIGTERM|FORK_LOG|FORK_WAIT, NULL));
if (r == 0) {
test_close_all_fds_inner();
test_close_all_fds_inner(close_all_fds);
_exit(EXIT_SUCCESS);
}
assert_se(r >= 0);
if (geteuid() != 0)
return (void) log_tests_skipped("Lacking privileges for test with close_range() blocked and /proc/ overmounted");
r = safe_fork("(caf-noproc)", FORK_CLOSE_ALL_FDS|FORK_DEATHSIG_SIGTERM|FORK_LOG|FORK_WAIT|FORK_NEW_MOUNTNS|FORK_MOUNTNS_SLAVE, NULL);
ASSERT_OK(r = safe_fork("(caf-nomalloc)", FORK_CLOSE_ALL_FDS|FORK_DEATHSIG_SIGTERM|FORK_LOG|FORK_WAIT, NULL));
if (r == 0) {
r = mount_nofollow_verbose(LOG_WARNING, "tmpfs", "/proc", "tmpfs", 0, NULL);
if (r < 0)
log_notice("Overmounting /proc/ didn't work, skipping close_all_fds() with masked /proc/.");
else
test_close_all_fds_inner();
test_close_all_fds_inner(close_all_fds_without_malloc);
_exit(EXIT_SUCCESS);
}
if (ERRNO_IS_NEG_PRIVILEGE(r))
return (void) log_tests_skipped("Lacking privileges for test in namespace with /proc/ overmounted");
assert_se(r >= 0);
if (!is_seccomp_available())
return (void) log_tests_skipped("Seccomp not available");
r = safe_fork("(caf-seccomp)", FORK_CLOSE_ALL_FDS|FORK_DEATHSIG_SIGTERM|FORK_LOG|FORK_WAIT, NULL);
ASSERT_OK(r = safe_fork("(caf-proc)", FORK_CLOSE_ALL_FDS|FORK_DEATHSIG_SIGTERM|FORK_LOG|FORK_WAIT, NULL));
if (r == 0) {
r = seccomp_prohibit_close_range();
if (r < 0)
log_notice("Applying seccomp filter didn't work, skipping close_all_fds() test with masked close_range().");
else
test_close_all_fds_inner();
test_close_all_fds_inner(close_all_fds_by_proc);
_exit(EXIT_SUCCESS);
}
assert_se(r >= 0);
r = safe_fork("(caf-scnp)", FORK_CLOSE_ALL_FDS|FORK_DEATHSIG_SIGTERM|FORK_LOG|FORK_WAIT|FORK_NEW_MOUNTNS|FORK_MOUNTNS_SLAVE, NULL);
ASSERT_OK(r = safe_fork("(caf-frugal)", FORK_CLOSE_ALL_FDS|FORK_DEATHSIG_SIGTERM|FORK_LOG|FORK_WAIT, NULL));
if (r == 0) {
r = seccomp_prohibit_close_range();
if (r < 0)
log_notice("Applying seccomp filter didn't work, skipping close_all_fds() test with masked close_range().");
else {
r = mount_nofollow_verbose(LOG_WARNING, "tmpfs", "/proc", "tmpfs", 0, NULL);
if (r < 0)
log_notice("Overmounting /proc/ didn't work, skipping close_all_fds() with masked /proc/.");
else
test_close_all_fds_inner();
}
test_close_all_fds_inner();
test_close_all_fds_inner(close_all_fds_frugal);
_exit(EXIT_SUCCESS);
}
assert_se(r >= 0);
}
TEST(format_proc_fd_path) {
@ -680,6 +617,134 @@ TEST(dir_fd_is_root) {
assert_se(dir_fd_is_root_or_cwd(fd) == 0);
}
static void test_path_is_root_at_one(bool expected) {
ASSERT_OK_POSITIVE(path_is_root("/"));
ASSERT_OK_POSITIVE(path_is_root("/."));
ASSERT_OK_EQ(path_is_root("/./.."), expected);
ASSERT_OK_EQ(path_is_root("/.."), expected);
ASSERT_OK_EQ(path_is_root("/../"), expected);
ASSERT_OK_EQ(path_is_root("/../."), expected);
ASSERT_OK_EQ(path_is_root("/../.."), expected);
ASSERT_OK_ZERO(path_is_root("/usr"));
ASSERT_OK_ZERO(path_is_root("/./usr"));
ASSERT_OK_ZERO(path_is_root("/../usr"));
ASSERT_OK_ZERO(path_is_root("/.././usr"));
ASSERT_OK_ZERO(path_is_root("/../../usr"));
_cleanup_close_ int fd = -EBADF;
ASSERT_OK_ERRNO(fd = open("/", O_CLOEXEC|O_PATH|O_DIRECTORY|O_NOFOLLOW));
ASSERT_OK_POSITIVE(path_is_root_at(fd, NULL));
ASSERT_OK_POSITIVE(path_is_root_at(fd, ""));
ASSERT_OK_POSITIVE(path_is_root_at(fd, "."));
ASSERT_OK_EQ(path_is_root_at(fd, "./../"), expected);
ASSERT_OK_EQ(path_is_root_at(fd, "../"), expected);
ASSERT_OK_POSITIVE(path_is_root_at(fd, "/"));
ASSERT_OK_POSITIVE(path_is_root_at(fd, "/."));
ASSERT_OK_EQ(path_is_root_at(fd, "/./.."), expected);
ASSERT_OK_EQ(path_is_root_at(fd, "/.."), expected);
ASSERT_OK_EQ(path_is_root_at(fd, "/../"), expected);
ASSERT_OK_EQ(path_is_root_at(fd, "/../."), expected);
ASSERT_OK_EQ(path_is_root_at(fd, "/../.."), expected);
ASSERT_OK_ZERO(path_is_root_at(fd, "usr"));
ASSERT_OK_ZERO(path_is_root_at(fd, "./usr"));
ASSERT_OK_ZERO(path_is_root_at(fd, "../usr"));
ASSERT_OK_ZERO(path_is_root_at(fd, "/usr"));
ASSERT_OK_ZERO(path_is_root_at(fd, "/./usr"));
ASSERT_OK_ZERO(path_is_root_at(fd, "/../usr"));
ASSERT_OK_ZERO(path_is_root_at(fd, "/.././usr"));
ASSERT_OK_ZERO(path_is_root_at(fd, "/../../usr"));
safe_close(fd);
ASSERT_OK_ERRNO(fd = open("/../", O_CLOEXEC|O_PATH|O_DIRECTORY|O_NOFOLLOW));
ASSERT_OK_EQ(path_is_root_at(fd, NULL), expected);
ASSERT_OK_EQ(path_is_root_at(fd, ""), expected);
ASSERT_OK_EQ(path_is_root_at(fd, "."), expected);
ASSERT_OK_EQ(path_is_root_at(fd, "./.."), expected);
ASSERT_OK_EQ(path_is_root_at(fd, "../"), expected);
ASSERT_OK_POSITIVE(path_is_root_at(fd, "/"));
ASSERT_OK_POSITIVE(path_is_root_at(fd, "/."));
ASSERT_OK_EQ(path_is_root_at(fd, "/./.."), expected);
ASSERT_OK_EQ(path_is_root_at(fd, "/.."), expected);
ASSERT_OK_EQ(path_is_root_at(fd, "/../"), expected);
ASSERT_OK_EQ(path_is_root_at(fd, "/../."), expected);
ASSERT_OK_EQ(path_is_root_at(fd, "/../.."), expected);
ASSERT_OK_ZERO(path_is_root_at(fd, "usr"));
ASSERT_OK_ZERO(path_is_root_at(fd, "./usr"));
ASSERT_OK_ZERO(path_is_root_at(fd, "../usr"));
ASSERT_OK_ZERO(path_is_root_at(fd, "/usr"));
ASSERT_OK_ZERO(path_is_root_at(fd, "/./usr"));
ASSERT_OK_ZERO(path_is_root_at(fd, "/../usr"));
ASSERT_OK_ZERO(path_is_root_at(fd, "/.././usr"));
ASSERT_OK_ZERO(path_is_root_at(fd, "/../../usr"));
}
TEST(path_is_root_at) {
int r;
test_path_is_root_at_one(true);
r = detach_mount_namespace();
if (r < 0)
return (void) log_tests_skipped_errno(r, "Failed to detach mount namespace");
/* Interestingly, even after bind mount a path on "/", still "/" points to the previous root
* directory, but "/../" points to the new root directory. Hence, path_is_root("/") is true but
* path_is_root("/../") is false. Such spurious situation is resolved after chroot()ing to the new
* root directory. */
ASSERT_OK(mount_nofollow_verbose(LOG_DEBUG, "/", "/", NULL, MS_BIND|MS_REC, NULL));
log_debug("/* %s: bind mount(\"/\", \"/\") */", __func__);
test_path_is_root_at_one(false);
/* chroot("/") does not change anything. */
ASSERT_OK_ERRNO(chroot("/"));
log_debug("/* %s: chroot(\"/\") */", __func__);
test_path_is_root_at_one(false);
/* chdir("/") neither change anything. */
ASSERT_OK_ERRNO(chdir("/"));
log_debug("/* %s: chdir(\"/\") */", __func__);
test_path_is_root_at_one(false);
/* chdir("/../") neither change anything. */
ASSERT_OK_ERRNO(chdir("/../"));
log_debug("/* %s: chdir(\"/../\") */", __func__);
test_path_is_root_at_one(false);
/* After chroot("/../"), both "/" and "/../" point to the new root directory. */
ASSERT_OK_ERRNO(chroot("/../"));
log_debug("/* %s: chroot(\"/../\") */", __func__);
test_path_is_root_at_one(true);
/* chdir("/../") does not change anything. */
ASSERT_OK_ERRNO(chdir("/../"));
log_debug("/* %s: chdir(\"/../\") again */", __func__);
test_path_is_root_at_one(true);
/* bind mounting to non-root directory has no problem, of course. */
_cleanup_(rm_rf_physical_and_freep) char *tmp = NULL;
ASSERT_OK(mkdtemp_malloc("/tmp/test-path_is_root-XXXXXX", &tmp));
ASSERT_OK(mount_nofollow_verbose(LOG_DEBUG, "/", tmp, NULL, MS_BIND|MS_REC, NULL));
log_debug("/* %s: bind mount(\"/\", \"%s\") */", __func__, tmp);
test_path_is_root_at_one(true);
ASSERT_OK_ERRNO(chdir(tmp));
log_debug("/* %s: chdir(\"%s\") */", __func__, tmp);
test_path_is_root_at_one(true);
ASSERT_OK_ERRNO(chroot(tmp));
log_debug("/* %s: chroot(\"%s\") */", __func__, tmp);
test_path_is_root_at_one(true);
ASSERT_OK_ERRNO(chdir(tmp));
log_debug("/* %s: chdir(\"%s\") again */", __func__, tmp);
test_path_is_root_at_one(true);
}
TEST(fds_are_same_mount) {
_cleanup_close_ int fd1 = -EBADF, fd2 = -EBADF, fd3 = -EBADF, fd4 = -EBADF;

View File

@ -351,7 +351,7 @@ create_session() {
[Service]
Type=simple
ExecStart=
ExecStart=-/sbin/agetty --autologin logind-test-user --noclear %I $TERM
ExecStart=-/usr/sbin/agetty --autologin logind-test-user --noclear %I $TERM
Restart=no
EOF
systemctl daemon-reload

View File

@ -20,7 +20,7 @@ Before=getty.target
ConditionPathExists=/dev/console
[Service]
ExecStart=-/sbin/agetty --noreset --noclear --issue-file=/etc/issue:/etc/issue.d:/run/issue.d:/usr/lib/issue.d --keep-baud 115200,57600,38400,9600 - ${TERM}
ExecStart=-{{AGETTY}} --noreset --noclear --issue-file=/etc/issue:/etc/issue.d:/run/issue.d:/usr/lib/issue.d --keep-baud 115200,57600,38400,9600 - ${TERM}
Type=idle
Restart=always
UtmpIdentifier=cons

View File

@ -25,7 +25,7 @@ Conflicts=rescue.service
Before=rescue.service
[Service]
ExecStart=-/sbin/agetty --noreset --noclear --issue-file=/etc/issue:/etc/issue.d:/run/issue.d:/usr/lib/issue.d - ${TERM}
ExecStart=-{{AGETTY}} --noreset --noclear --issue-file=/etc/issue:/etc/issue.d:/run/issue.d:/usr/lib/issue.d - ${TERM}
Type=idle
Restart=always
RestartSec=0

View File

@ -34,7 +34,7 @@ Before=rescue.service
ConditionPathExists=/dev/tty0
[Service]
ExecStart=-/sbin/agetty --noreset --noclear --issue-file=/etc/issue:/etc/issue.d:/run/issue.d:/usr/lib/issue.d - ${TERM}
ExecStart=-{{AGETTY}} --noreset --noclear --issue-file=/etc/issue:/etc/issue.d:/run/issue.d:/usr/lib/issue.d - ${TERM}
Type=idle
Restart=always
RestartSec=0

View File

@ -30,7 +30,7 @@ Conflicts=rescue.service
Before=rescue.service
[Service]
ExecStart=-/sbin/agetty --noreset --noclear --issue-file=/etc/issue:/etc/issue.d:/run/issue.d:/usr/lib/issue.d --keep-baud 115200,57600,38400,9600 - ${TERM}
ExecStart=-{{AGETTY}} --noreset --noclear --issue-file=/etc/issue:/etc/issue.d:/run/issue.d:/usr/lib/issue.d --keep-baud 115200,57600,38400,9600 - ${TERM}
Type=idle
Restart=always
UtmpIdentifier=%I