[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#1061587: marked as done (bookworm-pu: package systemd/252.22-1~deb12u1)



Your message dated Sat, 10 Feb 2024 13:11:22 +0000
with message-id <E1rYn8c-002ycY-26@coccia.debian.org>
and subject line Released with 12.5
has caused the Debian Bug report #1061587,
regarding bookworm-pu: package systemd/252.22-1~deb12u1
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
1061587: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1061587
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
Tags: bookworm
User: release.debian.org@packages.debian.org
Usertags: pu
X-Debbugs-Cc: pkg-systemd-maintainers@lists.alioth.debian.org

Dear Release Team,

We would like to upload the latest stable point release of systemd 252
to bookworm-p-u. Stable release branches are maintained upstream with
the intention of providing bug fixes only and no compatibility
breakages, and with automated non-trivial CI jobs that also cover
Debian and Ubuntu. I have already uploaded to p-u.

Packaging changes are refreshing patches and adding a missing
dependency for one autopkgtest suite, that should now result in a fully
green DebCI run. Attached debdiff excludes hwdb.d/ changes, which are
just a large number of hardware vendor/devices IDs and constitutes the
bulk of the changes. The list of commits included can be seen at:

https://github.com/systemd/systemd-stable/compare/v252.21...v252.22

-- 
Kind regards,
Luca Boccassi
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/debian/changelog systemd-252.22/debian/changelog
--- systemd-252.21/debian/changelog	2023-12-24 14:29:22.000000000 +0000
+++ systemd-252.22/debian/changelog	2024-01-26 21:48:36.000000000 +0000
@@ -1,3 +1,12 @@
+systemd (252.22-1~deb12u1) bookworm; urgency=medium
+
+  * d/t/control: add dependency on stress for upstream suite. Needed by
+    TEST-55-OOMD
+  * New upstream version 252.22
+  * Refresh patches
+
+ -- Luca Boccassi <bluca@debian.org>  Fri, 26 Jan 2024 21:48:36 +0000
+
 systemd (252.21-1~deb12u1) bookworm; urgency=medium
 
   * New upstream version 252.21
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/debian/patches/debian/fsckd-daemon-for-inter-fsckd-communication.patch systemd-252.22/debian/patches/debian/fsckd-daemon-for-inter-fsckd-communication.patch
--- systemd-252.21/debian/patches/debian/fsckd-daemon-for-inter-fsckd-communication.patch	2023-12-24 14:29:22.000000000 +0000
+++ systemd-252.22/debian/patches/debian/fsckd-daemon-for-inter-fsckd-communication.patch	2024-01-26 21:48:26.000000000 +0000
@@ -239,10 +239,10 @@
 +
 +</refentry>
 diff --git a/meson.build b/meson.build
-index b9f2c7e..d2b021d 100644
+index 27d95e7..9ace3e6 100644
 --- a/meson.build
 +++ b/meson.build
-@@ -3367,6 +3367,15 @@ executable(
+@@ -3368,6 +3368,15 @@ executable(
          install : true,
          install_dir : rootlibexecdir)
  
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/debian/patches/debian/Revert-core-one-step-back-again-for-nspawn-we-actual.patch systemd-252.22/debian/patches/debian/Revert-core-one-step-back-again-for-nspawn-we-actual.patch
--- systemd-252.21/debian/patches/debian/Revert-core-one-step-back-again-for-nspawn-we-actual.patch	2023-12-24 14:29:22.000000000 +0000
+++ systemd-252.22/debian/patches/debian/Revert-core-one-step-back-again-for-nspawn-we-actual.patch	2024-01-26 21:48:26.000000000 +0000
@@ -14,7 +14,7 @@
  1 file changed, 1 insertion(+), 10 deletions(-)
 
 diff --git a/src/core/unit.c b/src/core/unit.c
-index 767e821..1f2651e 100644
+index 52df7ce..fb9a740 100644
 --- a/src/core/unit.c
 +++ b/src/core/unit.c
 @@ -4646,16 +4646,7 @@ int unit_kill_context(
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/debian/patches/p11kit-switch-to-dlopen.patch systemd-252.22/debian/patches/p11kit-switch-to-dlopen.patch
--- systemd-252.21/debian/patches/p11kit-switch-to-dlopen.patch	2023-12-24 14:29:22.000000000 +0000
+++ systemd-252.22/debian/patches/p11kit-switch-to-dlopen.patch	2024-01-26 21:48:26.000000000 +0000
@@ -13,10 +13,10 @@
  7 files changed, 202 insertions(+), 60 deletions(-)
 
 diff --git a/meson.build b/meson.build
-index b250474..b9f2c7e 100644
+index 9de2309..27d95e7 100644
 --- a/meson.build
 +++ b/meson.build
-@@ -1461,8 +1461,10 @@ if want_p11kit != 'false' and not skip_deps
+@@ -1462,8 +1462,10 @@ if want_p11kit != 'false' and not skip_deps
                                 version : '>= 0.23.3',
                                 required : want_p11kit == 'true')
          have = libp11kit.found()
@@ -718,10 +718,10 @@
  }
  
 diff --git a/test/test-functions b/test/test-functions
-index 29f346f..c169635 100644
+index 73fbef8..0ba7ce2 100644
 --- a/test/test-functions
 +++ b/test/test-functions
-@@ -1369,7 +1369,7 @@ install_missing_libraries() {
+@@ -1386,7 +1386,7 @@ install_missing_libraries() {
      local lib path
      # A number of dependencies is now optional via dlopen, so the install
      # script will not pick them up, since it looks at linkage.
@@ -730,7 +730,7 @@
          ddebug "Searching for $lib via pkg-config"
          if pkg-config --exists "$lib"; then
                  path="$(pkg-config --variable=libdir "$lib")"
-@@ -1381,6 +1381,10 @@ install_missing_libraries() {
+@@ -1398,6 +1398,10 @@ install_missing_libraries() {
                  if ! [[ ${lib} =~ ^lib ]]; then
                          lib="lib${lib}"
                  fi
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/debian/tests/control systemd-252.22/debian/tests/control
--- systemd-252.21/debian/tests/control	2023-12-24 14:29:22.000000000 +0000
+++ systemd-252.22/debian/tests/control	2024-01-26 21:46:55.000000000 +0000
@@ -191,6 +191,7 @@
   xkb-data,
   locales,
   locales-all,
+  stress,
 Restrictions: needs-root, allow-stderr, isolation-machine
 
 Tests: boot-smoke
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/factory/etc/pam.d/system-auth systemd-252.22/factory/etc/pam.d/system-auth
--- systemd-252.21/factory/etc/pam.d/system-auth	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/factory/etc/pam.d/system-auth	2024-01-26 21:35:39.000000000 +0000
@@ -13,7 +13,7 @@
 account   required   pam_permit.so
 
 -password sufficient pam_systemd_home.so
-password  sufficient pam_unix.so sha512 shadow try_first_pass use_authtok
+password  sufficient pam_unix.so sha512 shadow try_first_pass
 password  required   pam_deny.so
 
 -session  optional   pam_keyinit.so revoke
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/man/pam_systemd_home.xml systemd-252.22/man/pam_systemd_home.xml
--- systemd-252.21/man/pam_systemd_home.xml	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/man/pam_systemd_home.xml	2024-01-26 21:35:39.000000000 +0000
@@ -148,7 +148,7 @@
 account   required   pam_permit.so
 
 <command>-password sufficient pam_systemd_home.so</command>
-password  sufficient pam_unix.so sha512 shadow try_first_pass use_authtok
+password  sufficient pam_unix.so sha512 shadow try_first_pass
 password  required   pam_deny.so
 
 -session  optional   pam_keyinit.so revoke
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/man/pam_systemd.xml systemd-252.22/man/pam_systemd.xml
--- systemd-252.21/man/pam_systemd.xml	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/man/pam_systemd.xml	2024-01-26 21:35:39.000000000 +0000
@@ -318,8 +318,7 @@
 account   required   pam_permit.so
 
 -password sufficient pam_systemd_home.so
-password  sufficient pam_unix.so sha512 shadow try_first_pass use_authtok
-
+password  sufficient pam_unix.so sha512 shadow try_first_pass
 password  required   pam_deny.so
 
 -session  optional   pam_keyinit.so revoke
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/man/systemctl.xml systemd-252.22/man/systemctl.xml
--- systemd-252.21/man/systemctl.xml	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/man/systemctl.xml	2024-01-26 21:35:39.000000000 +0000
@@ -2287,9 +2287,10 @@
         <term><option>--firmware-setup</option></term>
 
         <listitem>
-          <para>When used with the <command>reboot</command> command, indicate to the system's firmware to
-          reboot into the firmware setup interface. Note that this functionality is not available on all
-          systems.</para>
+          <para>When used with the <command>reboot</command>, <command>poweroff</command>, or
+          <command>halt</command> command, indicate to the system's firmware to reboot into the firmware
+          setup interface for the next boot. Note that this functionality is not available on all systems.
+          </para>
         </listitem>
       </varlistentry>
 
@@ -2297,10 +2298,11 @@
         <term><option>--boot-loader-menu=<replaceable>timeout</replaceable></option></term>
 
         <listitem>
-          <para>When used with the <command>reboot</command> command, indicate to the system's boot loader to
-          show the boot loader menu on the following boot. Takes a time value as parameter — indicating the
-          menu timeout. Pass zero in order to disable the menu timeout. Note that not all boot loaders
-          support this functionality.</para>
+          <para>When used with the <command>reboot</command>, <command>poweroff</command>, or
+          <command>halt</command> command, indicate to the system's boot loader to show the boot loader menu
+          on the following boot. Takes a time value as parameter — indicating the menu timeout. Pass zero
+          in order to disable the menu timeout. Note that not all boot loaders support this functionality.
+          </para>
         </listitem>
       </varlistentry>
 
@@ -2308,10 +2310,11 @@
         <term><option>--boot-loader-entry=<replaceable>ID</replaceable></option></term>
 
         <listitem>
-          <para>When used with the <command>reboot</command> command, indicate to the system's boot loader to
-          boot into a specific boot loader entry on the following boot. Takes a boot loader entry identifier
-          as argument, or <literal>help</literal> in order to list available entries. Note that not all boot
-          loaders support this functionality.</para>
+          <para>When used with the <command>reboot</command>, <command>poweroff</command>, or
+          <command>halt</command> command, indicate to the system's boot loader to boot into a specific
+          boot loader entry on the following boot. Takes a boot loader entry identifier as argument,
+          or <literal>help</literal> in order to list available entries. Note that not all boot loaders
+          support this functionality.</para>
         </listitem>
       </varlistentry>
 
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/man/systemd-analyze.xml systemd-252.22/man/systemd-analyze.xml
--- systemd-252.21/man/systemd-analyze.xml	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/man/systemd-analyze.xml	2024-01-26 21:35:39.000000000 +0000
@@ -1253,6 +1253,7 @@
       <xi:include href="user-system-options.xml" xpointer="machine" />
 
       <varlistentry>
+        <term><option>-q</option></term>
         <term><option>--quiet</option></term>
 
         <listitem><para>Suppress hints and other non-essential output.</para></listitem>
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/man/systemd-detect-virt.xml systemd-252.22/man/systemd-detect-virt.xml
--- systemd-252.21/man/systemd-detect-virt.xml	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/man/systemd-detect-virt.xml	2024-01-26 21:35:39.000000000 +0000
@@ -139,7 +139,7 @@
 
           <row>
             <entry><varname>apple</varname></entry>
-            <entry><ulink url="https://developer.apple.com/documentation/virtualization";>Apple Virtualization.framework</ulink></entry>
+            <entry><ulink url="https://developer.apple.com/documentation/virtualization";>Apple virtualization framework</ulink></entry>
           </row>
 
           <row>
@@ -148,6 +148,11 @@
           </row>
 
           <row>
+            <entry><varname>google</varname></entry>
+            <entry><ulink url="https://cloud.google.com/compute";>Google Compute Engine</ulink></entry>
+          </row>
+
+          <row>
             <entry valign="top" morerows="9">Container</entry>
             <entry><varname>openvz</varname></entry>
             <entry>OpenVZ/Virtuozzo</entry>
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/meson.build systemd-252.22/meson.build
--- systemd-252.21/meson.build	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/meson.build	2024-01-26 21:35:39.000000000 +0000
@@ -349,6 +349,7 @@
 basic_disabled_warnings = [
         '-Wno-missing-field-initializers',
         '-Wno-unused-parameter',
+        '-Wno-nonnull-compare',
 ]
 
 possible_common_cc_flags = [
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/mkosi.default.d/debian/10-mkosi.debian systemd-252.22/mkosi.default.d/debian/10-mkosi.debian
--- systemd-252.21/mkosi.default.d/debian/10-mkosi.debian	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/mkosi.default.d/debian/10-mkosi.debian	2024-01-26 21:35:39.000000000 +0000
@@ -23,6 +23,7 @@
         libpam0g
         libpwquality1
         libqrencode4
+        libip4tc2
         libtss2-dev # Use the -dev package to avoid churn in updating version numbers
         netcat-openbsd
         policykit-1
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/modprobe.d/systemd.conf systemd-252.22/modprobe.d/systemd.conf
--- systemd-252.21/modprobe.d/systemd.conf	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/modprobe.d/systemd.conf	2024-01-26 21:35:39.000000000 +0000
@@ -18,3 +18,7 @@
 # Do the same for dummy0.
 
 options dummy numdummies=0
+
+# Do the same for ifb0.
+
+options ifb numifbs=0
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/.packit.yml systemd-252.22/.packit.yml
--- systemd-252.21/.packit.yml	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/.packit.yml	2024-01-26 21:35:39.000000000 +0000
@@ -16,6 +16,13 @@
 srpm_build_deps: []
 
 actions:
+  get-current-version:
+    # Show the closest matching tag for the checked out revision, otherwise
+    # Packit tries to get the latest tag by creation date, which doesn't work
+    # well in the systemd-stable repo. We also need to sanitize it manually
+    # since "upstream_tag_template" defined above doesn't apply here.
+    - "bash -ec 'git describe --tags --abbrev=0 | cut -b 2-'"
+
   post-upstream-clone:
     # Use the Fedora 38 specfile
     - "git clone --branch f38 https://src.fedoraproject.org/rpms/systemd .packit_rpm --depth=1"
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/rules.d/50-udev-default.rules.in systemd-252.22/rules.d/50-udev-default.rules.in
--- systemd-252.21/rules.d/50-udev-default.rules.in	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/rules.d/50-udev-default.rules.in	2024-01-26 21:35:39.000000000 +0000
@@ -14,6 +14,8 @@
 SUBSYSTEM=="rtc", ATTR{hctosys}=="1", SYMLINK+="rtc"
 SUBSYSTEM=="rtc", KERNEL=="rtc0", SYMLINK+="rtc", OPTIONS+="link_priority=-100"
 
+SUBSYSTEM=="hidraw", IMPORT{builtin}="hwdb"
+
 SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", IMPORT{builtin}="usb_id", IMPORT{builtin}="hwdb --subsystem=usb"
 ENV{MODALIAS}!="", IMPORT{builtin}="hwdb --subsystem=$env{SUBSYSTEM}"
 
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/rules.d/99-systemd.rules.in systemd-252.22/rules.d/99-systemd.rules.in
--- systemd-252.21/rules.d/99-systemd.rules.in	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/rules.d/99-systemd.rules.in	2024-01-26 21:35:39.000000000 +0000
@@ -73,7 +73,7 @@
 # Pull in backlight save/restore for all backlight devices and
 # keyboard backlights
 SUBSYSTEM=="backlight", TAG+="systemd", IMPORT{builtin}="path_id", ENV{SYSTEMD_WANTS}+="systemd-backlight@backlight:$name.service"
-SUBSYSTEM=="leds", KERNEL=="*kbd_backlight", TAG+="systemd", IMPORT{builtin}="path_id", ENV{SYSTEMD_WANTS}+="systemd-backlight@leds:$name.service"
+SUBSYSTEM=="leds", KERNEL=="*kbd_backlight*", TAG+="systemd", IMPORT{builtin}="path_id", ENV{SYSTEMD_WANTS}+="systemd-backlight@leds:$name.service"
 {% endif %}
 
 # Pull in rfkill save/restore for all rfkill devices
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/shell-completion/bash/systemctl.in systemd-252.22/shell-completion/bash/systemctl.in
--- systemd-252.21/shell-completion/bash/systemctl.in	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/shell-completion/bash/systemctl.in	2024-01-26 21:35:39.000000000 +0000
@@ -62,6 +62,8 @@
                               | { while read -r a b; do [[ $a =~ @\. ]] && echo " ${a%%@.*}@"; done; }; }
 __get_active_units   () { __systemctl $1 list-units "$2*"      \
                               | { while read -r a b; do echo " $a"; done; }; }
+__get_active_services() { __systemctl $1 list-units "$2*.service" \
+                              | { while read -r a b; do echo " $a"; done; }; }
 
 __get_not_masked_unit_files() {
     # filter out masked, not-found, or template units.
@@ -219,12 +221,15 @@
                              list-timers list-units list-unit-files poweroff
                              reboot rescue show-environment suspend get-default
                              is-system-running preset-all list-automounts'
-        [FILE]='link switch-root bind mount-image'
+        [FILE]='link switch-root'
         [TARGETS]='set-default'
         [MACHINES]='list-machines'
         [LOG_LEVEL]='log-level'
         [LOG_TARGET]='log-target'
+        [SERVICE_LOG_LEVEL]='service-log-level'
+        [SERVICE_LOG_TARGET]='service-log-target'
         [SERVICE_WATCHDOGS]='service-watchdogs'
+        [MOUNT]='bind mount-image'
     )
 
     for ((i=0; i < COMP_CWORD; i++)); do
@@ -353,8 +358,33 @@
         comps='debug info notice warning err crit alert emerg'
     elif __contains_word "$verb" ${VERBS[LOG_TARGET]}; then
         comps='console journal kmsg journal-or-kmsg null'
+    elif __contains_word "$verb" ${VERBS[SERVICE_LOG_LEVEL]}; then
+        if __contains_word "$prev" ${VERBS[SERVICE_LOG_LEVEL]}; then
+            comps=$( __get_all_unit_files $mode "$cur" )
+        elif __contains_word "$prev" debug info notice warning err crit alert emerg; then
+            return 0
+        else
+            comps='debug info notice warning err crit alert emerg'
+        fi
+    elif __contains_word "$verb" ${VERBS[SERVICE_LOG_TARGET]}; then
+        if __contains_word "$prev" ${VERBS[SERVICE_LOG_TARGET]}; then
+            comps=$( __get_all_unit_files $mode "$cur" )
+        elif __contains_word "$prev" console journal kmsg journal-or-kmsg null; then
+            return 0
+        else
+            comps='console journal kmsg journal-or-kmsg null'
+        fi
     elif __contains_word "$verb" ${VERBS[SERVICE_WATCHDOGS]}; then
         comps='on off'
+    elif __contains_word "$verb" ${VERBS[MOUNT]}; then
+        if __contains_word "$prev" ${VERBS[MOUNT]}; then
+            comps=$( __get_active_services $mode "$cur" )
+        elif [[ "$prev" =~ .service ]]; then
+            comps=$( compgen -A file -- "$cur" )
+            compopt -o filenames
+        else
+            return 0
+        fi
     fi
 
     COMPREPLY=( $(compgen -o filenames -W '$comps' -- "$cur_orig") )
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/shell-completion/bash/systemd-analyze systemd-252.22/shell-completion/bash/systemd-analyze
--- systemd-252.21/shell-completion/bash/systemd-analyze	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/shell-completion/bash/systemd-analyze	2024-01-26 21:35:39.000000000 +0000
@@ -57,7 +57,7 @@
 
     local -A OPTS=(
         [STANDALONE]='-h --help --version --system --user --global --order --require --no-pager
-                             --man=no --generators=yes --quiet'
+                             --man=no --generators=yes -q --quiet'
         [ARG]='-H --host -M --machine --fuzz --from-pattern --to-pattern --root'
     )
 
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/src/analyze/analyze.c systemd-252.22/src/analyze/analyze.c
--- systemd-252.21/src/analyze/analyze.c	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/src/analyze/analyze.c	2024-01-26 21:35:39.000000000 +0000
@@ -318,7 +318,7 @@
         assert(argc >= 0);
         assert(argv);
 
-        while ((c = getopt_long(argc, argv, "hH:M:U:", options, NULL)) >= 0)
+        while ((c = getopt_long(argc, argv, "hH:M:U:q", options, NULL)) >= 0)
                 switch (c) {
 
                 case 'h':
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/src/basic/alloc-util.h systemd-252.22/src/basic/alloc-util.h
--- systemd-252.21/src/basic/alloc-util.h	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/src/basic/alloc-util.h	2024-01-26 21:35:39.000000000 +0000
@@ -20,7 +20,7 @@
  * proceeding and smashing the stack limits. Note that by default RLIMIT_STACK is 8M on Linux. */
 #define ALLOCA_MAX (4U*1024U*1024U)
 
-#define new(t, n) ((t*) malloc_multiply(sizeof(t), (n)))
+#define new(t, n) ((t*) malloc_multiply((n), sizeof(t)))
 
 #define new0(t, n) ((t*) calloc((n) ?: 1, sizeof(t)))
 
@@ -45,9 +45,9 @@
                 (t*) alloca0((sizeof(t)*_n_));                          \
         })
 
-#define newdup(t, p, n) ((t*) memdup_multiply(p, sizeof(t), (n)))
+#define newdup(t, p, n) ((t*) memdup_multiply(p, (n), sizeof(t)))
 
-#define newdup_suffix0(t, p, n) ((t*) memdup_suffix0_multiply(p, sizeof(t), (n)))
+#define newdup_suffix0(t, p, n) ((t*) memdup_suffix0_multiply(p, (n), sizeof(t)))
 
 #define malloc0(n) (calloc(1, (n) ?: 1))
 
@@ -112,7 +112,7 @@
         return _unlikely_(need != 0 && size > (SIZE_MAX / need));
 }
 
-_malloc_  _alloc_(1, 2) static inline void *malloc_multiply(size_t size, size_t need) {
+_malloc_ _alloc_(1, 2) static inline void *malloc_multiply(size_t need, size_t size) {
         if (size_multiply_overflow(size, need))
                 return NULL;
 
@@ -128,7 +128,7 @@
 }
 #endif
 
-_alloc_(2, 3) static inline void *memdup_multiply(const void *p, size_t size, size_t need) {
+_alloc_(2, 3) static inline void *memdup_multiply(const void *p, size_t need, size_t size) {
         if (size_multiply_overflow(size, need))
                 return NULL;
 
@@ -137,7 +137,7 @@
 
 /* Note that we can't decorate this function with _alloc_() since the returned memory area is one byte larger
  * than the product of its parameters. */
-static inline void *memdup_suffix0_multiply(const void *p, size_t size, size_t need) {
+static inline void *memdup_suffix0_multiply(const void *p, size_t need, size_t size) {
         if (size_multiply_overflow(size, need))
                 return NULL;
 
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/src/basic/sigbus.c systemd-252.22/src/basic/sigbus.c
--- systemd-252.21/src/basic/sigbus.c	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/src/basic/sigbus.c	2024-01-26 21:35:39.000000000 +0000
@@ -39,14 +39,14 @@
         }
 
         /* If we can't, make sure the queue size is out of bounds, to
-         * mark it as overflow */
+         * mark it as overflowed */
         for (;;) {
                 sig_atomic_t c;
 
                 __atomic_thread_fence(__ATOMIC_SEQ_CST);
                 c = n_sigbus_queue;
 
-                if (c > SIGBUS_QUEUE_MAX) /* already overflow */
+                if (c > SIGBUS_QUEUE_MAX) /* already overflowed */
                         return;
 
                 /* OK if we clobber c here, since we either immediately return
@@ -69,7 +69,7 @@
                 if (_likely_(c == 0))
                         return 0;
 
-                if (_unlikely_(c >= SIGBUS_QUEUE_MAX))
+                if (_unlikely_(c > SIGBUS_QUEUE_MAX))
                         return -EOVERFLOW;
 
                 for (u = 0; u < SIGBUS_QUEUE_MAX; u++) {
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/src/basic/strv.c systemd-252.22/src/basic/strv.c
--- systemd-252.21/src/basic/strv.c	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/src/basic/strv.c	2024-01-26 21:35:39.000000000 +0000
@@ -97,6 +97,22 @@
         return TAKE_PTR(result);
 }
 
+int strv_copy_unless_empty(char * const *l, char ***ret) {
+        assert(ret);
+
+        if (strv_isempty(l)) {
+                *ret = NULL;
+                return 0;
+        }
+
+        char **copy = strv_copy(l);
+        if (!copy)
+                return -ENOMEM;
+
+        *ret = TAKE_PTR(copy);
+        return 1;
+}
+
 size_t strv_length(char * const *l) {
         size_t n = 0;
 
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/src/basic/strv.h systemd-252.22/src/basic/strv.h
--- systemd-252.21/src/basic/strv.h	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/src/basic/strv.h	2024-01-26 21:35:39.000000000 +0000
@@ -30,6 +30,7 @@
 #define _cleanup_strv_free_erase_ _cleanup_(strv_free_erasep)
 
 char** strv_copy(char * const *l);
+int strv_copy_unless_empty(char * const *l, char ***ret);
 size_t strv_length(char * const *l) _pure_;
 
 int strv_extend_strv(char ***a, char * const *b, bool filter_duplicates);
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/src/basic/virt.c systemd-252.22/src/basic/virt.c
--- systemd-252.21/src/basic/virt.c	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/src/basic/virt.c	2024-01-26 21:35:39.000000000 +0000
@@ -53,6 +53,7 @@
                 { "ACRNACRNACRN", VIRTUALIZATION_ACRN      },
                 /* https://www.lockheedmartin.com/en-us/products/Hardened-Security-for-Intel-Processors.html */
                 { "SRESRESRESRE", VIRTUALIZATION_SRE       },
+                { "Apple VZ",     VIRTUALIZATION_APPLE     },
         };
 
         uint32_t eax, ebx, ecx, edx;
@@ -168,22 +169,23 @@
                 const char *vendor;
                 Virtualization id;
         } dmi_vendor_table[] = {
-                { "KVM",                  VIRTUALIZATION_KVM       },
-                { "OpenStack",            VIRTUALIZATION_KVM       }, /* Detect OpenStack instance as KVM in non x86 architecture */
-                { "KubeVirt",             VIRTUALIZATION_KVM       }, /* Detect KubeVirt instance as KVM in non x86 architecture */
-                { "Amazon EC2",           VIRTUALIZATION_AMAZON    },
-                { "QEMU",                 VIRTUALIZATION_QEMU      },
-                { "VMware",               VIRTUALIZATION_VMWARE    }, /* https://kb.vmware.com/s/article/1009458 */
-                { "VMW",                  VIRTUALIZATION_VMWARE    },
-                { "innotek GmbH",         VIRTUALIZATION_ORACLE    },
-                { "VirtualBox",           VIRTUALIZATION_ORACLE    },
-                { "Xen",                  VIRTUALIZATION_XEN       },
-                { "Bochs",                VIRTUALIZATION_BOCHS     },
-                { "Parallels",            VIRTUALIZATION_PARALLELS },
+                { "KVM",                   VIRTUALIZATION_KVM       },
+                { "OpenStack",             VIRTUALIZATION_KVM       }, /* Detect OpenStack instance as KVM in non x86 architecture */
+                { "KubeVirt",              VIRTUALIZATION_KVM       }, /* Detect KubeVirt instance as KVM in non x86 architecture */
+                { "Amazon EC2",            VIRTUALIZATION_AMAZON    },
+                { "QEMU",                  VIRTUALIZATION_QEMU      },
+                { "VMware",                VIRTUALIZATION_VMWARE    }, /* https://kb.vmware.com/s/article/1009458 */
+                { "VMW",                   VIRTUALIZATION_VMWARE    },
+                { "innotek GmbH",          VIRTUALIZATION_ORACLE    },
+                { "VirtualBox",            VIRTUALIZATION_ORACLE    },
+                { "Xen",                   VIRTUALIZATION_XEN       },
+                { "Bochs",                 VIRTUALIZATION_BOCHS     },
+                { "Parallels",             VIRTUALIZATION_PARALLELS },
                 /* https://wiki.freebsd.org/bhyve */
-                { "BHYVE",                VIRTUALIZATION_BHYVE     },
-                { "Hyper-V",              VIRTUALIZATION_MICROSOFT },
-                { "Apple Virtualization", VIRTUALIZATION_APPLE     },
+                { "BHYVE",                 VIRTUALIZATION_BHYVE     },
+                { "Hyper-V",               VIRTUALIZATION_MICROSOFT },
+                { "Apple Virtualization",  VIRTUALIZATION_APPLE     },
+                { "Google Compute Engine", VIRTUALIZATION_GOOGLE    }, /* https://cloud.google.com/run/docs/container-contract#sandbox */
         };
         int r;
 
@@ -986,7 +988,7 @@
                         return true;
         }
 
-        if (__get_cpuid(7, &eax, &ebx, &ecx, &edx)) {
+        if (__get_cpuid_count(7, 0, &eax, &ebx, &ecx, &edx)) {
                 if (given_flag_in_set(flag, leaf7_ebx, ELEMENTSOF(leaf7_ebx), ebx))
                         return true;
         }
@@ -1035,6 +1037,7 @@
         [VIRTUALIZATION_POWERVM]         = "powervm",
         [VIRTUALIZATION_APPLE]           = "apple",
         [VIRTUALIZATION_SRE]             = "sre",
+        [VIRTUALIZATION_GOOGLE]          = "google",
         [VIRTUALIZATION_VM_OTHER]        = "vm-other",
 
         [VIRTUALIZATION_SYSTEMD_NSPAWN]  = "systemd-nspawn",
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/src/basic/virt.h systemd-252.22/src/basic/virt.h
--- systemd-252.21/src/basic/virt.h	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/src/basic/virt.h	2024-01-26 21:35:39.000000000 +0000
@@ -27,6 +27,7 @@
         VIRTUALIZATION_POWERVM,
         VIRTUALIZATION_APPLE,
         VIRTUALIZATION_SRE,
+        VIRTUALIZATION_GOOGLE,
         VIRTUALIZATION_VM_OTHER,
         VIRTUALIZATION_VM_LAST = VIRTUALIZATION_VM_OTHER,
 
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/src/boot/efi/util.h systemd-252.22/src/boot/efi/util.h
--- systemd-252.21/src/boot/efi/util.h	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/src/boot/efi/util.h	2024-01-26 21:35:39.000000000 +0000
@@ -51,7 +51,7 @@
 }
 
 _malloc_ _alloc_(1, 2) _returns_nonnull_ _warn_unused_result_
-static inline void *xmalloc_multiply(size_t size, size_t n) {
+static inline void *xmalloc_multiply(size_t n, size_t size) {
         assert_se(!__builtin_mul_overflow(size, n, &size));
         return xmalloc(size);
 }
@@ -68,7 +68,7 @@
 }
 
 #define xpool_print(fmt, ...) ((char16_t *) ASSERT_SE_PTR(PoolPrint((fmt), ##__VA_ARGS__)))
-#define xnew(type, n) ((type *) xmalloc_multiply(sizeof(type), (n)))
+#define xnew(type, n) ((type *) xmalloc_multiply((n), sizeof(type)))
 
 typedef struct {
         EFI_PHYSICAL_ADDRESS addr;
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/src/busctl/busctl.c systemd-252.22/src/busctl/busctl.c
--- systemd-252.21/src/busctl/busctl.c	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/src/busctl/busctl.c	2024-01-26 21:35:39.000000000 +0000
@@ -1311,24 +1311,24 @@
                 if (r < 0)
                         return log_error_errno(r, "Failed to process bus: %m");
 
-                if (!is_monitor) {
-                        const char *name;
-
-                        /* wait until we lose our unique name */
-                        if (sd_bus_message_is_signal(m, "org.freedesktop.DBus", "NameLost") <= 0)
-                                continue;
+                if (m) {
+                        if (!is_monitor) {
+                                const char *name;
 
-                        r = sd_bus_message_read(m, "s", &name);
-                        if (r < 0)
-                                return bus_log_parse_error(r);
+                                /* wait until we lose our unique name */
+                                if (sd_bus_message_is_signal(m, "org.freedesktop.DBus", "NameLost") <= 0)
+                                        continue;
+
+                                r = sd_bus_message_read(m, "s", &name);
+                                if (r < 0)
+                                        return bus_log_parse_error(r);
 
-                        if (streq(name, unique_name))
-                                is_monitor = true;
+                                if (streq(name, unique_name))
+                                        is_monitor = true;
 
-                        continue;
-                }
+                                continue;
+                        }
 
-                if (m) {
                         dump(m, stdout);
                         fflush(stdout);
 
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/src/cgtop/cgtop.c systemd-252.22/src/cgtop/cgtop.c
--- systemd-252.21/src/cgtop/cgtop.c	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/src/cgtop/cgtop.c	2024-01-26 21:35:39.000000000 +0000
@@ -308,9 +308,9 @@
 
                         if (all_unified) {
                                 while (!isempty(l)) {
-                                        if (sscanf(l, "rbytes=%" SCNu64, &k))
+                                        if (sscanf(l, "rbytes=%" SCNu64, &k) == 1)
                                                 rd += k;
-                                        else if (sscanf(l, "wbytes=%" SCNu64, &k))
+                                        else if (sscanf(l, "wbytes=%" SCNu64, &k) == 1)
                                                 wr += k;
 
                                         l += strcspn(l, WHITESPACE);
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/src/core/unit.c systemd-252.22/src/core/unit.c
--- systemd-252.21/src/core/unit.c	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/src/core/unit.c	2024-01-26 21:35:39.000000000 +0000
@@ -6099,7 +6099,7 @@
                         return r;
         }
 
-        if (ACTIVATION_DETAILS_VTABLE(details)->append_env) {
+        if (ACTIVATION_DETAILS_VTABLE(details)->append_pair) {
                 r = ACTIVATION_DETAILS_VTABLE(details)->append_pair(details, strv);
                 if (r < 0)
                         return r;
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/src/cryptenroll/cryptenroll.c systemd-252.22/src/cryptenroll/cryptenroll.c
--- systemd-252.21/src/cryptenroll/cryptenroll.c	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/src/cryptenroll/cryptenroll.c	2024-01-26 21:35:39.000000000 +0000
@@ -412,7 +412,7 @@
                                         if (n > INT_MAX)
                                                 return log_error_errno(SYNTHETIC_ERRNO(ERANGE), "Slot index out of range: %u", n);
 
-                                        a = reallocarray(arg_wipe_slots, sizeof(int), arg_n_wipe_slots + 1);
+                                        a = reallocarray(arg_wipe_slots, arg_n_wipe_slots + 1, sizeof(int));
                                         if (!a)
                                                 return log_oom();
 
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/src/home/org.freedesktop.home1.conf systemd-252.22/src/home/org.freedesktop.home1.conf
--- systemd-252.21/src/home/org.freedesktop.home1.conf	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/src/home/org.freedesktop.home1.conf	2024-01-26 21:35:39.000000000 +0000
@@ -127,6 +127,10 @@
 
                 <allow send_destination="org.freedesktop.home1"
                        send_interface="org.freedesktop.home1.Manager"
+                       send_member="DeactivateAllHomes"/>
+
+                <allow send_destination="org.freedesktop.home1"
+                       send_interface="org.freedesktop.home1.Manager"
                        send_member="Rebalance"/>
 
                 <!-- Home object -->
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/src/journal-remote/microhttpd-util.c systemd-252.22/src/journal-remote/microhttpd-util.c
--- systemd-252.21/src/journal-remote/microhttpd-util.c	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/src/journal-remote/microhttpd-util.c	2024-01-26 21:35:39.000000000 +0000
@@ -26,11 +26,13 @@
         REENABLE_WARNING;
 }
 
-static int mhd_respond_internal(struct MHD_Connection *connection,
-                                enum MHD_RequestTerminationCode code,
-                                const char *buffer,
-                                size_t size,
-                                enum MHD_ResponseMemoryMode mode) {
+int mhd_respond_internal(
+                struct MHD_Connection *connection,
+                enum MHD_RequestTerminationCode code,
+                const char *buffer,
+                size_t size,
+                enum MHD_ResponseMemoryMode mode) {
+
         assert(connection);
 
         _cleanup_(MHD_destroy_responsep) struct MHD_Response *response
@@ -44,29 +46,16 @@
         return MHD_queue_response(connection, code, response);
 }
 
-int mhd_respond(struct MHD_Connection *connection,
-                enum MHD_RequestTerminationCode code,
-                const char *message) {
-
-        const char *fmt;
-
-        fmt = strjoina(message, "\n");
-
-        return mhd_respond_internal(connection, code,
-                                    fmt, strlen(message) + 1,
-                                    MHD_RESPMEM_PERSISTENT);
-}
-
 int mhd_respond_oom(struct MHD_Connection *connection) {
-        return mhd_respond(connection, MHD_HTTP_SERVICE_UNAVAILABLE,  "Out of memory.");
+        return mhd_respond(connection, MHD_HTTP_SERVICE_UNAVAILABLE, "Out of memory.");
 }
 
-int mhd_respondf(struct MHD_Connection *connection,
-                 int error,
-                 enum MHD_RequestTerminationCode code,
-                 const char *format, ...) {
+int mhd_respondf_internal(
+                struct MHD_Connection *connection,
+                int error,
+                enum MHD_RequestTerminationCode code,
+                const char *format, ...) {
 
-        const char *fmt;
         char *m;
         int r;
         va_list ap;
@@ -77,11 +66,8 @@
         if (error < 0)
                 error = -error;
         errno = -error;
-        fmt = strjoina(format, "\n");
         va_start(ap, format);
-        DISABLE_WARNING_FORMAT_NONLITERAL;
-        r = vasprintf(&m, fmt, ap);
-        REENABLE_WARNING;
+        r = vasprintf(&m, format, ap);
         va_end(ap);
 
         if (r < 0)
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/src/journal-remote/microhttpd-util.h systemd-252.22/src/journal-remote/microhttpd-util.h
--- systemd-252.21/src/journal-remote/microhttpd-util.h	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/src/journal-remote/microhttpd-util.h	2024-01-26 21:35:39.000000000 +0000
@@ -62,17 +62,34 @@
 /* respond_oom() must be usable with return, hence this form. */
 #define respond_oom(connection) log_oom(), mhd_respond_oom(connection)
 
-int mhd_respondf(struct MHD_Connection *connection,
-                 int error,
-                 enum MHD_RequestTerminationCode code,
-                 const char *format, ...) _printf_(4,5);
-
-int mhd_respond(struct MHD_Connection *connection,
+int mhd_respond_internal(
+                struct MHD_Connection *connection,
                 enum MHD_RequestTerminationCode code,
-                const char *message);
+                const char *buffer,
+                size_t size,
+                enum MHD_ResponseMemoryMode mode);
+
+#define mhd_respond(connection, code, message)                  \
+        mhd_respond_internal(                                   \
+             connection, code,                                  \
+             message "\n",                                      \
+             strlen(message) + 1,                               \
+             MHD_RESPMEM_PERSISTENT)
 
 int mhd_respond_oom(struct MHD_Connection *connection);
 
+int mhd_respondf_internal(
+                struct MHD_Connection *connection,
+                int error,
+                enum MHD_RequestTerminationCode code,
+                const char *format, ...) _printf_(4,5);
+
+#define mhd_respondf(connection, error, code, format, ...)      \
+        mhd_respondf_internal(                                  \
+                connection, error, code,                        \
+                format "\n",                                    \
+                ##__VA_ARGS__)
+
 int check_permissions(struct MHD_Connection *connection, int *code, char **hostname);
 
 /* Set gnutls internal logging function to a callback which uses our
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/src/libsystemd/sd-bus/bus-message.c systemd-252.22/src/libsystemd/sd-bus/bus-message.c
--- systemd-252.21/src/libsystemd/sd-bus/bus-message.c	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/src/libsystemd/sd-bus/bus-message.c	2024-01-26 21:35:39.000000000 +0000
@@ -1270,7 +1270,7 @@
         if (copy < 0)
                 return -errno;
 
-        f = reallocarray(m->fds, sizeof(int), m->n_fds + 1);
+        f = reallocarray(m->fds, m->n_fds + 1, sizeof(int));
         if (!f) {
                 m->poisoned = true;
                 safe_close(copy);
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/src/libsystemd/sd-id128/id128-util.c systemd-252.22/src/libsystemd/sd-id128/id128-util.c
--- systemd-252.21/src/libsystemd/sd-id128/id128-util.c	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/src/libsystemd/sd-id128/id128-util.c	2024-01-26 21:35:39.000000000 +0000
@@ -11,6 +11,7 @@
 #include "stdio-util.h"
 #include "string-util.h"
 #include "sync-util.h"
+#include "virt.h"
 
 bool id128_is_valid(const char *s) {
         size_t l;
@@ -181,6 +182,13 @@
         /* Reads the systems product UUID from DMI or devicetree (where it is located on POWER). This is
          * particularly relevant in VM environments, where VM managers typically place a VM uuid there. */
 
+        r = detect_container();
+        if (r < 0)
+                return r;
+        if (r > 0) /* Refuse returning this in containers, as this is not a property of our system then, but
+                    * of the host */
+                return -ENOENT;
+
         r = id128_read("/sys/class/dmi/id/product_uuid", ID128_FORMAT_UUID, &uuid);
         if (r == -ENOENT)
                 r = id128_read("/proc/device-tree/vm,uuid", ID128_FORMAT_UUID, &uuid);
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/src/libsystemd/sd-journal/journal-file.c systemd-252.22/src/libsystemd/sd-journal/journal-file.c
--- systemd-252.21/src/libsystemd/sd-journal/journal-file.c	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/src/libsystemd/sd-journal/journal-file.c	2024-01-26 21:35:39.000000000 +0000
@@ -2190,6 +2190,11 @@
         assert(e);
         assert(t);
 
+        /* If we are already going down, we cannot install the timer.
+         * In such case, the caller needs to call journal_file_post_change() explicitly. */
+        if (IN_SET(sd_event_get_state(e), SD_EVENT_EXITING, SD_EVENT_FINISHED))
+                return 0;
+
         r = sd_event_add_time(e, &timer, CLOCK_MONOTONIC, 0, 0, post_change_thunk, f);
         if (r < 0)
                 return r;
@@ -2201,7 +2206,7 @@
         f->post_change_timer = TAKE_PTR(timer);
         f->post_change_timer_period = t;
 
-        return r;
+        return 1;
 }
 
 static int entry_item_cmp(const EntryItem *a, const EntryItem *b) {
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/src/libsystemd/sd-login/sd-login.c systemd-252.22/src/libsystemd/sd-login/sd-login.c
--- systemd-252.21/src/libsystemd/sd-login/sd-login.c	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/src/libsystemd/sd-login/sd-login.c	2024-01-26 21:35:39.000000000 +0000
@@ -802,7 +802,7 @@
                                 uid_t *t;
 
                                 n = MAX(16, 2*r);
-                                t = reallocarray(l, sizeof(uid_t), n);
+                                t = reallocarray(l, n, sizeof(uid_t));
                                 if (!t)
                                         return -ENOMEM;
 
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/src/network/netdev/tuntap.c systemd-252.22/src/network/netdev/tuntap.c
--- systemd-252.21/src/network/netdev/tuntap.c	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/src/network/netdev/tuntap.c	2024-01-26 21:35:39.000000000 +0000
@@ -137,6 +137,19 @@
         if (ioctl(fd, TUNSETIFF, &ifr) < 0)
                 return log_netdev_error_errno(netdev, errno, "TUNSETIFF failed: %m");
 
+        if (t->multi_queue) {
+                /* If we don't detach the queue, the kernel will send packets to our queue and they
+                 * will be dropped because we never read them, which is especially important in case
+                 * of KeepCarrier option which persists open FD. So detach our queue right after
+                 * device create/attach to make kernel not send the packets to it. The option is
+                 * available for multi-queue devices only.
+                 *
+                 * See https://github.com/systemd/systemd/pull/30504 for details. */
+                struct ifreq detach_request = { .ifr_flags = IFF_DETACH_QUEUE };
+                if (ioctl(fd, TUNSETQUEUE, &detach_request) < 0)
+                        return log_netdev_error_errno(netdev, errno, "TUNSETQUEUE failed: %m");
+        }
+
         if (t->user_name) {
                 const char *user = t->user_name;
                 uid_t uid;
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/src/network/networkd-link.c systemd-252.22/src/network/networkd-link.c
--- systemd-252.21/src/network/networkd-link.c	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/src/network/networkd-link.c	2024-01-26 21:35:39.000000000 +0000
@@ -1642,7 +1642,7 @@
                 usec = 5 * USEC_PER_SEC;
 
         else
-                /* Otherwise, use the currently set value. */
+                /* Otherwise, use the implied default value. */
                 usec = link->network->ignore_carrier_loss_usec;
 
         if (usec == USEC_INFINITY)
@@ -2005,20 +2005,18 @@
         if (master_ifindex == link->ifindex)
                 master_ifindex = 0;
 
-        if (master_ifindex == link->master_ifindex)
-                return 0;
-
-        if (link->master_ifindex == 0)
-                log_link_debug(link, "Attached to master interface: %i", master_ifindex);
-        else if (master_ifindex == 0)
-                log_link_debug(link, "Detached from master interface: %i", link->master_ifindex);
-        else
-                log_link_debug(link, "Master interface changed: %i %s %i", link->master_ifindex,
-                               special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), master_ifindex);
-
-        link_drop_from_master(link);
+        if (master_ifindex != link->master_ifindex) {
+                if (link->master_ifindex == 0)
+                        log_link_debug(link, "Attached to master interface: %i", master_ifindex);
+                else if (master_ifindex == 0)
+                        log_link_debug(link, "Detached from master interface: %i", link->master_ifindex);
+                else
+                        log_link_debug(link, "Master interface changed: %i %s %i", link->master_ifindex,
+                                       special_glyph(SPECIAL_GLYPH_ARROW_RIGHT), master_ifindex);
 
-        link->master_ifindex = master_ifindex;
+                link_drop_from_master(link);
+                link->master_ifindex = master_ifindex;
+        }
 
         r = link_append_to_master(link);
         if (r < 0)
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/src/network/networkd-network.c systemd-252.22/src/network/networkd-network.c
--- systemd-252.21/src/network/networkd-network.c	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/src/network/networkd-network.c	2024-01-26 21:35:39.000000000 +0000
@@ -283,10 +283,8 @@
                 network->ignore_carrier_loss_usec = USEC_INFINITY;
         }
 
-        if (!network->ignore_carrier_loss_set) {
-                network->ignore_carrier_loss_set = true;
+        if (!network->ignore_carrier_loss_set) /* Set implied default. */
                 network->ignore_carrier_loss_usec = network->configure_without_carrier ? USEC_INFINITY : 0;
-        }
 
         if (IN_SET(network->activation_policy, ACTIVATION_POLICY_DOWN, ACTIVATION_POLICY_ALWAYS_DOWN, ACTIVATION_POLICY_MANUAL)) {
                 if (network->required_for_online < 0 ||
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/src/network/networkd-queue.c systemd-252.22/src/network/networkd-queue.c
--- systemd-252.21/src/network/networkd-queue.c	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/src/network/networkd-queue.c	2024-01-26 21:35:39.000000000 +0000
@@ -123,11 +123,8 @@
         assert(process);
 
         req = new(Request, 1);
-        if (!req) {
-                if (free_func)
-                        free_func(userdata);
+        if (!req)
                 return -ENOMEM;
-        }
 
         *req = (Request) {
                 .n_ref = 1,
@@ -169,12 +166,19 @@
                 request_process_func_t process,
                 Request **ret) {
 
+        int r;
+
         assert(netdev);
 
-        return request_new(netdev->manager, NULL, REQUEST_TYPE_NETDEV_INDEPENDENT,
-                           netdev_ref(netdev), (mfree_func_t) netdev_unref,
-                           trivial_hash_func, trivial_compare_func,
-                           process, NULL, NULL, ret);
+        r = request_new(netdev->manager, NULL, REQUEST_TYPE_NETDEV_INDEPENDENT,
+                        netdev, (mfree_func_t) netdev_unref,
+                        trivial_hash_func, trivial_compare_func,
+                        process, NULL, NULL, ret);
+        if (r <= 0)
+                return r;
+
+        netdev_ref(netdev);
+        return 1;
 }
 
 int link_queue_request_full(
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/src/network/networkd-route.c systemd-252.22/src/network/networkd-route.c
--- systemd-252.21/src/network/networkd-route.c	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/src/network/networkd-route.c	2024-01-26 21:35:39.000000000 +0000
@@ -2768,6 +2768,7 @@
 
         if (isempty(rvalue)) {
                 n->multipath_routes = ordered_set_free_with_destructor(n->multipath_routes, multipath_route_free);
+                TAKE_PTR(n);
                 return 0;
         }
 
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/src/nspawn/nspawn-bind-user.c systemd-252.22/src/nspawn/nspawn-bind-user.c
--- systemd-252.21/src/nspawn/nspawn-bind-user.c	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/src/nspawn/nspawn-bind-user.c	2024-01-26 21:35:39.000000000 +0000
@@ -286,7 +286,7 @@
                 if (!sd)
                         return log_oom();
 
-                cm = reallocarray(*custom_mounts, sizeof(CustomMount), *n_custom_mounts + 1);
+                cm = reallocarray(*custom_mounts, *n_custom_mounts + 1, sizeof(CustomMount));
                 if (!cm)
                         return log_oom();
 
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/src/resolve/dns-type.h systemd-252.22/src/resolve/dns-type.h
--- systemd-252.21/src/resolve/dns-type.h	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/src/resolve/dns-type.h	2024-01-26 21:35:39.000000000 +0000
@@ -7,7 +7,7 @@
  * http://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml.
  */
 enum {
-        /* Normal records */
+        /* 0 is reserved */
         DNS_TYPE_A          = 0x01,
         DNS_TYPE_NS,
         DNS_TYPE_MD,
@@ -60,7 +60,8 @@
         DNS_TYPE_NSEC3,
         DNS_TYPE_NSEC3PARAM,
         DNS_TYPE_TLSA,
-
+        DNS_TYPE_SMIMEA, /* RFC 8162 */
+        /* 0x36 (54) is not assigned */
         DNS_TYPE_HIP        = 0x37,
         DNS_TYPE_NINFO,
         DNS_TYPE_RKEY,
@@ -68,15 +69,23 @@
         DNS_TYPE_CDS,
         DNS_TYPE_CDNSKEY,
         DNS_TYPE_OPENPGPKEY,
-
+        DNS_TYPE_CSYNC,
+        DNS_TYPE_ZONEMD,
+        DNS_TYPE_SVCB, /* RFC 9460 */
+        DNS_TYPE_HTTPS, /* RFC 9460 */
+        /* 0x42…0x62 (66…98) are not assigned */
         DNS_TYPE_SPF        = 0x63,
+        DNS_TYPE_UINFO,
+        DNS_TYPE_UID,
+        DNS_TYPE_GID,
+        DNS_TYPE_UNSPEC,
         DNS_TYPE_NID,
         DNS_TYPE_L32,
         DNS_TYPE_L64,
         DNS_TYPE_LP,
         DNS_TYPE_EUI48,
         DNS_TYPE_EUI64,
-
+        /* 0x6e…0xf8 (110…248) are not assigned */
         DNS_TYPE_TKEY       = 0xF9,
         DNS_TYPE_TSIG,
         DNS_TYPE_IXFR,
@@ -86,15 +95,24 @@
         DNS_TYPE_ANY,
         DNS_TYPE_URI,
         DNS_TYPE_CAA,
+        DNS_TYPE_AVC,
+        DNS_TYPE_DOA,
+        DNS_TYPE_AMTRELAY,
+        DNS_TYPE_RESINFO,
+        /* 0x106…0x7fff (262…32767) are not assigned */
         DNS_TYPE_TA         = 0x8000,
         DNS_TYPE_DLV,
-
+        /* 32770…65279 are not assigned */
+        /* 65280…65534 are for private use */
+        /* 65535 is reserved */
         _DNS_TYPE_MAX,
         _DNS_TYPE_INVALID = -EINVAL,
 };
 
-assert_cc(DNS_TYPE_SSHFP == 44);
-assert_cc(DNS_TYPE_TLSA == 52);
+assert_cc(DNS_TYPE_SMIMEA == 53);
+assert_cc(DNS_TYPE_HTTPS == 65);
+assert_cc(DNS_TYPE_EUI64 == 109);
+assert_cc(DNS_TYPE_RESINFO == 261);
 assert_cc(DNS_TYPE_ANY == 255);
 
 /* DNS record classes, see RFC 1035 */
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/src/resolve/resolved-dns-cache.c systemd-252.22/src/resolve/resolved-dns-cache.c
--- systemd-252.21/src/resolve/resolved-dns-cache.c	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/src/resolve/resolved-dns-cache.c	2024-01-26 21:35:39.000000000 +0000
@@ -1266,6 +1266,10 @@
                         if (!j->shared_owner)
                                 continue;
 
+                        /* Ignore cached goodby packet. See on_mdns_packet() and RFC 6762 section 10.1. */
+                        if (j->rr->ttl <= 1)
+                                continue;
+
                         /* RFC6762 7.1: Don't append records with less than half the TTL remaining
                          * as known answers. */
                         if (usec_sub_unsigned(j->until, ts) < j->rr->ttl * USEC_PER_SEC / 2)
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/src/resolve/resolved-dns-packet.c systemd-252.22/src/resolve/resolved-dns-packet.c
--- systemd-252.21/src/resolve/resolved-dns-packet.c	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/src/resolve/resolved-dns-packet.c	2024-01-26 21:35:39.000000000 +0000
@@ -310,9 +310,23 @@
 
         switch (p->protocol) {
 
-        case DNS_PROTOCOL_LLMNR:
         case DNS_PROTOCOL_DNS:
-                if (DNS_PACKET_TC(p)) /* mDNS query may have truncation flag. */
+                if (DNS_PACKET_TC(p))
+                        return -EBADMSG;
+
+                if (DNS_PACKET_QDCOUNT(p) != 1)
+                        return -EBADMSG;
+
+                if (DNS_PACKET_ANCOUNT(p) > 0)
+                        return -EBADMSG;
+
+                /* Note, in most cases, DNS query packet does not have authority section. But some query
+                 * types, e.g. IXFR, have Authority sections. Hence, unlike the check for LLMNR, we do not
+                 * check DNS_PACKET_NSCOUNT(p) here. */
+                break;
+
+        case DNS_PROTOCOL_LLMNR:
+                if (DNS_PACKET_TC(p))
                         return -EBADMSG;
 
                 /* RFC 4795, Section 2.1.1. says to discard all queries with QDCOUNT != 1 */
@@ -330,6 +344,9 @@
                 break;
 
         case DNS_PROTOCOL_MDNS:
+                /* Note, mDNS query may have truncation flag. So, unlike the check for DNS and LLMNR,
+                 * we do not check DNS_PACKET_TC(p) here. */
+
                 /* RFC 6762, Section 18 specifies that messages with non-zero RCODE
                  * must be silently ignored, and that we must ignore the values of
                  * AA, RD, RA, AD, and CD bits. */
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/src/resolve/resolved-dns-transaction.c systemd-252.22/src/resolve/resolved-dns-transaction.c
--- systemd-252.21/src/resolve/resolved-dns-transaction.c	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/src/resolve/resolved-dns-transaction.c	2024-01-26 21:35:39.000000000 +0000
@@ -74,6 +74,10 @@
          * and the reply we might still get from the server will be eaten up instead of resulting in an ICMP
          * port unreachable error message. */
 
+        /* Skip the graveyard stuff when we're shutting down, since that requires running event loop */
+        if (!t->scope->manager->event || sd_event_get_state(t->scope->manager->event) == SD_EVENT_FINISHED)
+                use_graveyard = false;
+
         if (use_graveyard && t->dns_udp_fd >= 0 && t->sent && !t->received) {
                 r = manager_add_socket_to_graveyard(t->scope->manager, t->dns_udp_fd);
                 if (r < 0)
@@ -633,9 +637,20 @@
                 }
         }
 
-        if (error != 0)
-                LIST_FOREACH(transactions_by_stream, t, s->transactions)
+        if (error != 0) {
+                /* First, detach the stream from the server. Otherwise, transactions attached to this stream
+                 * may be restarted by on_transaction_stream_error() below with this stream. */
+                dns_stream_detach(s);
+
+                /* Do not use LIST_FOREACH() here, as
+                 *     on_transaction_stream_error()
+                 *         -> dns_transaction_complete_errno()
+                 *             -> dns_transaction_free()
+                 * may free multiple transactions in the list. */
+                DnsTransaction *t;
+                while ((t = s->transactions))
                         on_transaction_stream_error(t, error);
+        }
 
         return 0;
 }
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/src/resolve/resolved-llmnr.c systemd-252.22/src/resolve/resolved-llmnr.c
--- systemd-252.21/src/resolve/resolved-llmnr.c	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/src/resolve/resolved-llmnr.c	2024-01-26 21:35:39.000000000 +0000
@@ -45,7 +45,7 @@
         if (r < 0)
                 return r;
 
-        if (socket_ipv6_is_supported()) {
+        if (socket_ipv6_is_enabled()) {
                 r = manager_llmnr_ipv6_udp_fd(m);
                 if (r == -EADDRINUSE)
                         goto eaddrinuse;
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/src/resolve/resolved-mdns.c systemd-252.22/src/resolve/resolved-mdns.c
--- systemd-252.21/src/resolve/resolved-mdns.c	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/src/resolve/resolved-mdns.c	2024-01-26 21:35:39.000000000 +0000
@@ -36,7 +36,7 @@
         if (r < 0)
                 return r;
 
-        if (socket_ipv6_is_supported()) {
+        if (socket_ipv6_is_enabled()) {
                 r = manager_mdns_ipv6_fd(m);
                 if (r == -EADDRINUSE)
                         goto eaddrinuse;
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/src/shared/discover-image.c systemd-252.22/src/shared/discover-image.c
--- systemd-252.21/src/shared/discover-image.c	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/src/shared/discover-image.c	2024-01-26 21:35:39.000000000 +0000
@@ -1005,6 +1005,11 @@
         return 0;
 }
 
+static void make_lock_dir(void) {
+        (void) mkdir_p("/run/systemd/nspawn", 0755);
+        (void) mkdir("/run/systemd/nspawn/locks", 0700);
+}
+
 int image_path_lock(const char *path, int operation, LockFile *global, LockFile *local) {
         _cleanup_free_ char *p = NULL;
         LockFile t = LOCK_FILE_INIT;
@@ -1080,7 +1085,7 @@
         }
 
         if (p) {
-                (void) mkdir_p("/run/systemd/nspawn/locks", 0700);
+                make_lock_dir();
 
                 r = make_lock_file(p, operation, global);
                 if (r < 0) {
@@ -1253,7 +1258,7 @@
                 return 0;
         }
 
-        (void) mkdir_p("/run/systemd/nspawn/locks", 0700);
+        make_lock_dir();
 
         p = strjoina("/run/systemd/nspawn/locks/name-", name);
         return make_lock_file(p, operation, ret);
@@ -1293,7 +1298,6 @@
                 /* Accept trailing slashes */
                 if (p[strspn(p, "/")] == 0)
                         return true;
-
         }
 
         return false;
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/src/shared/utmp-wtmp.h systemd-252.22/src/shared/utmp-wtmp.h
--- systemd-252.21/src/shared/utmp-wtmp.h	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/src/shared/utmp-wtmp.h	2024-01-26 21:35:39.000000000 +0000
@@ -31,7 +31,8 @@
         return true;
 }
 static inline void utxent_cleanup(bool *initialized) {
-        if (initialized)
+        assert(initialized);
+        if (*initialized)
                 endutxent();
 }
 
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/src/shared/watchdog.c systemd-252.22/src/shared/watchdog.c
--- systemd-252.21/src/shared/watchdog.c	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/src/shared/watchdog.c	2024-01-26 21:35:39.000000000 +0000
@@ -261,12 +261,15 @@
 
 static int update_timeout(void) {
         int r;
+        usec_t previous_timeout;
 
         assert(watchdog_timeout > 0);
 
         if (watchdog_fd < 0)
                 return 0;
 
+        previous_timeout = watchdog_timeout;
+
         if (watchdog_timeout != USEC_INFINITY) {
                 r = watchdog_set_timeout();
                 if (r < 0) {
@@ -281,8 +284,12 @@
 
         if (watchdog_timeout == USEC_INFINITY) {
                 r = watchdog_read_timeout();
-                if (r < 0)
-                        return log_error_errno(r, "Failed to query watchdog HW timeout: %m");
+                if (r < 0) {
+                        if (!ERRNO_IS_NOT_SUPPORTED(r))
+                                return log_error_errno(r, "Failed to query watchdog HW timeout: %m");
+                        log_info("Reading watchdog timeout is not supported, reusing the configured timeout.");
+                        watchdog_timeout = previous_timeout;
+                }
         }
 
         /* If the watchdog timeout was changed, the pretimeout could have been
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/src/systemctl/systemctl-is-system-running.c systemd-252.22/src/systemctl/systemctl-is-system-running.c
--- systemd-252.21/src/systemctl/systemctl-is-system-running.c	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/src/systemctl/systemctl-is-system-running.c	2024-01-26 21:35:39.000000000 +0000
@@ -29,7 +29,7 @@
         sd_bus *bus;
         int r;
 
-        if (running_in_chroot() > 0 || (arg_transport == BUS_TRANSPORT_LOCAL && !sd_booted())) {
+        if (!isempty(arg_root) || running_in_chroot() > 0 || (arg_transport == BUS_TRANSPORT_LOCAL && !sd_booted())) {
                 if (!arg_quiet)
                         puts("offline");
                 return EXIT_FAILURE;
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/src/systemctl/systemctl-start-special.c systemd-252.22/src/systemctl/systemctl-start-special.c
--- systemd-252.21/src/systemctl/systemctl-start-special.c	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/src/systemctl/systemctl-start-special.c	2024-01-26 21:35:39.000000000 +0000
@@ -121,8 +121,7 @@
 }
 
 int verb_start_special(int argc, char *argv[], void *userdata) {
-        bool termination_action; /* An action that terminates the manager, can be performed also by
-                                  * signal. */
+        bool termination_action; /* An action that terminates the system, can be performed also by signal. */
         enum action a;
         int r;
 
@@ -140,17 +139,21 @@
                         return r;
         }
 
-        r = prepare_firmware_setup();
-        if (r < 0)
-                return r;
+        termination_action = IN_SET(a, ACTION_HALT, ACTION_POWEROFF, ACTION_REBOOT);
 
-        r = prepare_boot_loader_menu();
-        if (r < 0)
-                return r;
+        if (termination_action) {
+                r = prepare_firmware_setup();
+                if (r < 0)
+                        return r;
 
-        r = prepare_boot_loader_entry();
-        if (r < 0)
-                return r;
+                r = prepare_boot_loader_menu();
+                if (r < 0)
+                        return r;
+
+                r = prepare_boot_loader_entry();
+                if (r < 0)
+                        return r;
+        }
 
         if (a == ACTION_REBOOT) {
                 const char *arg = NULL;
@@ -192,10 +195,6 @@
                         return r;
         }
 
-        termination_action = IN_SET(a,
-                                    ACTION_HALT,
-                                    ACTION_POWEROFF,
-                                    ACTION_REBOOT);
         if (termination_action && arg_force >= 2)
                 return halt_now(a);
 
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/src/test/test-alloc-util.c systemd-252.22/src/test/test-alloc-util.c
--- systemd-252.21/src/test/test-alloc-util.c	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/src/test/test-alloc-util.c	2024-01-26 21:35:39.000000000 +0000
@@ -61,7 +61,7 @@
         size_t i;
         int *p;
 
-        dup = memdup_suffix0_multiply(org, sizeof(int), 3);
+        dup = memdup_suffix0_multiply(org, 3, sizeof(int));
         assert_se(dup);
         assert_se(dup[0] == 1);
         assert_se(dup[1] == 2);
@@ -69,7 +69,7 @@
         assert_se(((uint8_t*) dup)[sizeof(int) * 3] == 0);
         free(dup);
 
-        dup = memdup_multiply(org, sizeof(int), 3);
+        dup = memdup_multiply(org, 3, sizeof(int));
         assert_se(dup);
         assert_se(dup[0] == 1);
         assert_se(dup[1] == 2);
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/src/timesync/timesyncd-manager.c systemd-252.22/src/timesync/timesyncd-manager.c
--- systemd-252.21/src/timesync/timesyncd-manager.c	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/src/timesync/timesyncd-manager.c	2024-01-26 21:35:39.000000000 +0000
@@ -657,8 +657,7 @@
         if (r < 0)
                 return r;
 
-        if (addr.sa.sa_family == AF_INET)
-                (void) setsockopt_int(m->server_socket, IPPROTO_IP, IP_TOS, IPTOS_LOWDELAY);
+        (void) socket_set_option(m->server_socket, addr.sa.sa_family, IP_TOS, IPV6_TCLASS, IPTOS_DSCP_EF);
 
         return sd_event_add_io(m->event, &m->event_receive, m->server_socket, EPOLLIN, manager_receive_response, m);
 }
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/src/udev/dmi_memory_id/dmi_memory_id.c systemd-252.22/src/udev/dmi_memory_id/dmi_memory_id.c
--- systemd-252.21/src/udev/dmi_memory_id/dmi_memory_id.c	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/src/udev/dmi_memory_id/dmi_memory_id.c	2024-01-26 21:35:39.000000000 +0000
@@ -7,7 +7,7 @@
  *   Copyright (C) 2020 Bastien Nocera <hadess@hadess.net>
  *
  * Unless specified otherwise, all references are aimed at the "System
- * Management BIOS Reference Specification, Version 3.2.0" document,
+ * Management BIOS Reference Specification, Version 3.7.0" document,
  * available from http://www.dmtf.org/standards/smbios.
  *
  * Note to contributors:
@@ -145,7 +145,7 @@
                 [0x01] = "PC-98/C24 Add-on Card",       /* 0xA1 */
                 [0x02] = "PC-98/E Add-on Card",         /* 0xA2 */
                 [0x03] = "PC-98/Local Bus Add-on Card", /* 0xA3 */
-                [0x04] = "CXL Flexbus 1.0",             /* 0xA4 */
+                [0x04] = "CXL Add-on Card",             /* 0xA4 */
         };
         const char *str = OUT_OF_SPEC_STR;
 
@@ -301,6 +301,9 @@
                 [0x1F] = "Logical non-volatile device",
                 [0x20] = "HBM",
                 [0x21] = "HBM2",
+                [0x22] = "DDR5",
+                [0x23] = "LPDDR5",
+                [0x24] = "HBM3",
         };
 
         printf("MEMORY_DEVICE_%u_TYPE=%s\n", slot_num,
@@ -315,7 +318,7 @@
                 [3]  = "Fast-paged",
                 [4]  = "Static Column",
                 [5]  = "Pseudo-static",
-                [6]  = "RAMBus",
+                [6]  = "RAMBUS",
                 [7]  = "Synchronous",
                 [8]  = "CMOS",
                 [9]  = "EDO",
@@ -358,7 +361,7 @@
                 [0x04] = "NVDIMM-N",
                 [0x05] = "NVDIMM-F",
                 [0x06] = "NVDIMM-P",
-                [0x07] = "Intel Optane DC persistent memory",
+                [0x07] = "Intel Optane persistent memory",
         };
 
         printf("MEMORY_DEVICE_%u_MEMORY_TECHNOLOGY=%s\n", slot_num,
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/src/udev/udevadm-test-builtin.c systemd-252.22/src/udev/udevadm-test-builtin.c
--- systemd-252.21/src/udev/udevadm-test-builtin.c	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/src/udev/udevadm-test-builtin.c	2024-01-26 21:35:39.000000000 +0000
@@ -78,6 +78,7 @@
         int r;
 
         log_set_max_level(LOG_DEBUG);
+        log_parse_environment();
 
         r = parse_argv(argc, argv);
         if (r <= 0)
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/src/udev/udevadm-test.c systemd-252.22/src/udev/udevadm-test.c
--- systemd-252.21/src/udev/udevadm-test.c	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/src/udev/udevadm-test.c	2024-01-26 21:35:39.000000000 +0000
@@ -94,6 +94,7 @@
         int r;
 
         log_set_max_level(LOG_DEBUG);
+        log_parse_environment();
 
         r = parse_argv(argc, argv);
         if (r <= 0)
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/test/TEST-64-UDEV-STORAGE/test.sh systemd-252.22/test/TEST-64-UDEV-STORAGE/test.sh
--- systemd-252.21/test/TEST-64-UDEV-STORAGE/test.sh	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/test/TEST-64-UDEV-STORAGE/test.sh	2024-01-26 21:35:39.000000000 +0000
@@ -24,7 +24,7 @@
 
     case "${1:?}" in
         btrfs)
-            modprobe -nv btrfs && command -v mkfs.btrfs && command -v btrfs || return $?
+            host_has_btrfs
             ;;
         iscsi)
             # Client/initiator (Open-iSCSI)
@@ -36,7 +36,7 @@
             command -v lvm || return $?
             ;;
         mdadm)
-            command -v mdadm || return $?
+            host_has_mdadm
             ;;
         multipath)
             command -v multipath && command -v multipathd || return $?
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/test/TEST-74-AUX-UTILS/test.sh systemd-252.22/test/TEST-74-AUX-UTILS/test.sh
--- systemd-252.21/test/TEST-74-AUX-UTILS/test.sh	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/test/TEST-74-AUX-UTILS/test.sh	2024-01-26 21:35:39.000000000 +0000
@@ -7,4 +7,7 @@
 # shellcheck source=test/test-functions
 . "${TEST_BASE_DIR:?}/test-functions"
 
+# (Hopefully) a temporary workaround for https://github.com/systemd/systemd/issues/30573
+KERNEL_APPEND="${KERNEL_APPEND:-} SYSTEMD_DEFAULT_MOUNT_RATE_LIMIT_BURST=100"
+
 do_test "$@"
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/test/test-functions systemd-252.22/test/test-functions
--- systemd-252.21/test/test-functions	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/test/test-functions	2024-01-26 21:35:39.000000000 +0000
@@ -1061,7 +1061,9 @@
     image_install kpartx /lib/udev/kpartx_id lsmod mpathpersist multipath multipathd partx
     image_install "${ROOTLIBDIR:?}"/system/multipathd.{service,socket}
     if get_bool "$LOOKS_LIKE_DEBIAN"; then
-        inst_rules 56-dm-parts.rules 56-dm-mpath.rules 60-multipath.rules 68-del-part-nodes.rules 95-kpartx.rules
+        # Note: try both 60-kpartx.rules (as seen on Debian Sid with 0.9.4-7) and 90-kpartx.rules (as seen on
+        # Ubuntu Jammy with 0.8.8-1ubuntu1.22.04.4)
+        inst_rules 56-dm-parts.rules 56-dm-mpath.rules 60-kpartx.rules 60-multipath.rules 68-del-part-nodes.rules 90-kpartx.rules
     else
         inst_rules 11-dm-mpath.rules 11-dm-parts.rules 62-multipath.rules 66-kpartx.rules 68-del-part-nodes.rules
     fi
@@ -1108,6 +1110,11 @@
     mkdir -p "${initdir:?}/etc/lvm"
 }
 
+host_has_btrfs() (
+    set -e
+    modprobe -nv btrfs && command -v mkfs.btrfs && command -v btrfs || return $?
+)
+
 install_btrfs() {
     instmods btrfs
     # Not all utilities provided by btrfs-progs are listed here; extend the list
@@ -1175,6 +1182,11 @@
     fi
 }
 
+host_has_mdadm() (
+    set -e
+    command -v mdadm || return $?
+)
+
 install_mdadm() {
     local unit
     local mdadm_units=(
@@ -1188,6 +1200,7 @@
         system-shutdown/mdadm.shutdown
     )
 
+    instmods "=md"
     image_install mdadm mdmon
     inst_rules 01-md-raid-creating.rules 63-md-raid-arrays.rules 64-md-raid-assembly.rules 69-md-clustered-confirm-device.rules
     # Fedora/CentOS/RHEL ships this rule file
@@ -1196,6 +1209,10 @@
     for unit in "${mdadm_units[@]}"; do
         image_install "${ROOTLIBDIR:?}/$unit"
     done
+
+    # Disable the mdmonitor service, since it fails if there's no valid email address
+    # configured in /etc/mdadm.conf, which just unnecessarily pollutes the logs
+    "${SYSTEMCTL:?}" mask --root "${initdir:?}" mdmonitor.service || :
 }
 
 install_compiled_systemd() {
@@ -1976,14 +1993,14 @@
     # Newer Fedora versions use dbus-broker by default. Let's install it if it's available.
     if [ -f "$ROOTLIBDIR/system/dbus-broker.service" ]; then
         inst "$ROOTLIBDIR/system/dbus-broker.service"
-        inst_symlink /etc/systemd/system/dbus.service
         inst /usr/bin/dbus-broker
         inst /usr/bin/dbus-broker-launch
+        image_install -o {/etc,/usr/lib}/systemd/system/dbus.service
     elif [ -f "$ROOTLIBDIR/system/dbus-daemon.service" ]; then
         # Fedora rawhide replaced dbus.service with dbus-daemon.service
         inst "$ROOTLIBDIR/system/dbus-daemon.service"
         # Alias symlink
-        inst_symlink /etc/systemd/system/dbus.service
+        image_install -o {/etc,/usr/lib}/systemd/system/dbus.service
     else
         inst "$ROOTLIBDIR/system/dbus.service"
     fi
@@ -2042,12 +2059,12 @@
     # Newer Fedora versions use dbus-broker by default. Let's install it if it's available.
     if [ -f "$userunitdir/dbus-broker.service" ]; then
         inst "$userunitdir/dbus-broker.service"
-        inst_symlink /etc/systemd/user/dbus.service
+        image_install -o {/etc,/usr/lib}/systemd/user/dbus.service
     elif [ -f "${ROOTLIBDIR:?}/system/dbus-daemon.service" ]; then
         # Fedora rawhide replaced dbus.service with dbus-daemon.service
         inst "$userunitdir/dbus-daemon.service"
         # Alias symlink
-        inst_symlink /etc/systemd/user/dbus.service
+        image_install -o {/etc,/usr/lib}/systemd/user/dbus.service
     else
         inst "$userunitdir/dbus.service"
     fi
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/test/units/testsuite-17.03.sh systemd-252.22/test/units/testsuite-17.03.sh
--- systemd-252.21/test/units/testsuite-17.03.sh	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/test/units/testsuite-17.03.sh	2024-01-26 21:35:39.000000000 +0000
@@ -8,6 +8,9 @@
 setup() {
     mkdir -p "${TEST_RULE%/*}"
     [[ -e /etc/udev/udev.conf ]] && cp -f /etc/udev/udev.conf /etc/udev/udev.conf.bak
+    # Don't bother storing the coredumps in journal for this particular test
+    mkdir -p /run/systemd/coredump.conf.d/
+    echo -ne "[Coredump]\nStorage=external\n" >/run/systemd/coredump.conf.d/99-storage-journal.conf
 
     cat >"${TEST_RULE}" <<EOF
 ACTION=="add", SUBSYSTEM=="mem", KERNEL=="null", OPTIONS="log_level=debug"
@@ -31,6 +34,7 @@
     rm -rf "$TMPDIR"
     rm -f "$TEST_RULE"
     [[ -e /etc/udev/udev.conf.bak ]] && mv -f /etc/udev/udev.conf.bak /etc/udev/udev.conf
+    rm /run/systemd/coredump.conf.d/99-storage-journal.conf
     systemctl restart systemd-udevd.service
 }
 
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/test/units/testsuite-64.sh systemd-252.22/test/units/testsuite-64.sh
--- systemd-252.21/test/units/testsuite-64.sh	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/test/units/testsuite-64.sh	2024-01-26 21:35:39.000000000 +0000
@@ -988,10 +988,6 @@
 
 : >/failed
 
-# Disable the mdmonitor service, since it fails if there's no valid email address
-# configured in /etc/mdadm.conf, which just unnecessarily pollutes the logs
-systemctl list-unit-files mdmonitor.service >/dev/null && systemctl mask --runtime mdmonitor.service
-
 udevadm settle
 udevadm control --log-level debug
 lsblk -a
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/units/systemd-hibernate.service.in systemd-252.22/units/systemd-hibernate.service.in
--- systemd-252.21/units/systemd-hibernate.service.in	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/units/systemd-hibernate.service.in	2024-01-26 21:35:39.000000000 +0000
@@ -8,7 +8,7 @@
 #  (at your option) any later version.
 
 [Unit]
-Description=Hibernate
+Description=System Hibernate
 Documentation=man:systemd-hibernate.service(8)
 DefaultDependencies=no
 Requires=sleep.target
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/units/systemd-hybrid-sleep.service.in systemd-252.22/units/systemd-hybrid-sleep.service.in
--- systemd-252.21/units/systemd-hybrid-sleep.service.in	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/units/systemd-hybrid-sleep.service.in	2024-01-26 21:35:39.000000000 +0000
@@ -8,7 +8,7 @@
 #  (at your option) any later version.
 
 [Unit]
-Description=Hybrid Suspend+Hibernate
+Description=System Hybrid Suspend+Hibernate
 Documentation=man:systemd-hybrid-sleep.service(8)
 DefaultDependencies=no
 Requires=sleep.target
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/units/systemd-resolved.service.in systemd-252.22/units/systemd-resolved.service.in
--- systemd-252.21/units/systemd-resolved.service.in	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/units/systemd-resolved.service.in	2024-01-26 21:35:39.000000000 +0000
@@ -15,7 +15,7 @@
 Documentation=https://www.freedesktop.org/wiki/Software/systemd/writing-resolver-clients
 
 DefaultDependencies=no
-After=systemd-sysusers.service
+After=systemd-sysctl.service systemd-sysusers.service
 Before=sysinit.target network.target nss-lookup.target shutdown.target initrd-switch-root.target
 Conflicts=shutdown.target initrd-switch-root.target
 Wants=nss-lookup.target
diff -Nru --exclude pnp_id_registry.html --exclude acpi_id_registry.html --exclude parse_hwdb.py --exclude acpi_id_registry.csv --exclude pnp_id_registry.csv --exclude usb.ids --exclude pci.ids --exclude ma-large.txt --exclude ma-medium.txt --exclude ma-small.txt --exclude '*hwdb.patch' --exclude '*hwdb' systemd-252.21/units/systemd-suspend-then-hibernate.service.in systemd-252.22/units/systemd-suspend-then-hibernate.service.in
--- systemd-252.21/units/systemd-suspend-then-hibernate.service.in	2023-12-24 09:01:00.000000000 +0000
+++ systemd-252.22/units/systemd-suspend-then-hibernate.service.in	2024-01-26 21:35:39.000000000 +0000
@@ -8,7 +8,7 @@
 #  (at your option) any later version.
 
 [Unit]
-Description=Suspend; Hibernate if not used for a period of time
+Description=System Suspend then Hibernate
 Documentation=man:systemd-suspend-then-hibernate.service(8)
 DefaultDependencies=no
 Requires=sleep.target

Attachment: signature.asc
Description: This is a digitally signed message part


--- End Message ---
--- Begin Message ---
Version: 12.5

The upload requested in this bug has been released as part of 12.5.

--- End Message ---

Reply to: