From b83b37ef3b5fe12ed4e6d99603632f50eddc30e0 Mon Sep 17 00:00:00 2001 From: Jan Macku Date: Tue, 7 Jul 2026 14:24:15 +0200 Subject: [PATCH] systemd-257-29 Resolves: RHEL-180923, RHEL-155454, RHEL-180929 --- 0692-udev-drop-redundant-checks.patch | 56 +++++++++++++++++++ ...-specify-job-mode-for-the-stop-job-3.patch | 40 +++++++++++++ ...or-coredump-to-appear-before-parsing.patch | 37 ++++++++++++ ...S-VM-make-coredumps-stored-in-archiv.patch | 54 ++++++++++++++++++ ...S-VM-rotate-journal-at-one-more-plac.patch | 45 +++++++++++++++ ...issing-device-name-prefix-in-log-mes.patch | 31 ++++++++++ systemd.spec | 16 +++++- 7 files changed, 278 insertions(+), 1 deletion(-) create mode 100644 0692-udev-drop-redundant-checks.patch create mode 100644 0693-TEST-71-HOSTNAME-specify-job-mode-for-the-stop-job-3.patch create mode 100644 0694-test-wait-for-coredump-to-appear-before-parsing.patch create mode 100644 0695-TEST-87-AUX-UTILS-VM-make-coredumps-stored-in-archiv.patch create mode 100644 0696-TEST-87-AUX-UTILS-VM-rotate-journal-at-one-more-plac.patch create mode 100644 0697-udev-rules-add-missing-device-name-prefix-in-log-mes.patch diff --git a/0692-udev-drop-redundant-checks.patch b/0692-udev-drop-redundant-checks.patch new file mode 100644 index 0000000..e7e72e8 --- /dev/null +++ b/0692-udev-drop-redundant-checks.patch @@ -0,0 +1,56 @@ +From 21b5276e02b981a4c2626ada991ac8c695f656ed Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Thu, 12 Mar 2026 07:16:46 +0900 +Subject: [PATCH] udev: drop redundant checks + +This partially reverts 16325b35fa6ecb25f66534a562583ce3b96d52f3, +as bad characters are already filtered. + +(cherry picked from commit c5a04f59d912fb2c3451994279dea3ae3064f6c7) + +Resolves: RHEL-180923 +--- + src/udev/udev-builtin-net_id.c | 9 --------- + 1 file changed, 9 deletions(-) + +diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c +index 0d3c62f4b5..96e792bcde 100644 +--- a/src/udev/udev-builtin-net_id.c ++++ b/src/udev/udev-builtin-net_id.c +@@ -40,7 +40,6 @@ + #include "strv.h" + #include "strxcpyx.h" + #include "udev-builtin.h" +-#include "utf8.h" + + #define ONBOARD_14BIT_INDEX_MAX ((1U << 14) - 1) + #define ONBOARD_16BIT_INDEX_MAX ((1U << 16) - 1) +@@ -237,9 +236,6 @@ static int get_port_specifier(sd_device *dev, bool fallback_to_dev_id, char **re + } + } + +- if (!utf8_is_valid(phys_port_name) || string_has_cc(phys_port_name, /* ok= */ NULL)) +- return log_device_debug_errno(dev, SYNTHETIC_ERRNO(EINVAL), "Invalid phys_port_name"); +- + /* Otherwise, use phys_port_name as is. */ + buf = strjoin("n", phys_port_name); + if (!buf) +@@ -344,9 +340,6 @@ static int names_pci_onboard_label(UdevEvent *event, sd_device *pci_dev, const c + if (r < 0) + return log_device_debug_errno(pci_dev, r, "Failed to get PCI onboard label: %m"); + +- if (!utf8_is_valid(label) || string_has_cc(label, /* ok= */ NULL)) +- return log_device_debug_errno(dev, SYNTHETIC_ERRNO(EINVAL), "Invalid label"); +- + char str[ALTIFNAMSIZ]; + if (snprintf_ok(str, sizeof str, "%s%s", + naming_scheme_has(NAMING_LABEL_NOPREFIX) ? "" : prefix, +@@ -1264,8 +1257,6 @@ static int names_netdevsim(UdevEvent *event, const char *prefix) { + if (isempty(phys_port_name)) + return log_device_debug_errno(dev, SYNTHETIC_ERRNO(EOPNOTSUPP), + "The 'phys_port_name' attribute is empty."); +- if (!utf8_is_valid(phys_port_name) || string_has_cc(phys_port_name, /* ok= */ NULL)) +- return log_device_debug_errno(dev, SYNTHETIC_ERRNO(EINVAL), "Invalid phys_port_name"); + + char str[ALTIFNAMSIZ]; + if (snprintf_ok(str, sizeof str, "%si%un%s", prefix, addr, phys_port_name)) diff --git a/0693-TEST-71-HOSTNAME-specify-job-mode-for-the-stop-job-3.patch b/0693-TEST-71-HOSTNAME-specify-job-mode-for-the-stop-job-3.patch new file mode 100644 index 0000000..ffcd82c --- /dev/null +++ b/0693-TEST-71-HOSTNAME-specify-job-mode-for-the-stop-job-3.patch @@ -0,0 +1,40 @@ +From b01cc566e8b5ae794b08def0eaeec62b1f471fa2 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Wed, 30 Jul 2025 01:25:28 +0200 +Subject: [PATCH] TEST-71-HOSTNAME: specify job mode for the stop job (#38413) + +The CI run is failing in the stop command: +``` +[ 4841.936906] TEST-71-HOSTNAME.sh[140]: + stop_hostnamed +[ 4841.936906] TEST-71-HOSTNAME.sh[140]: + systemctl stop systemd-hostnamed.service +[ 4845.959747] TEST-71-HOSTNAME.sh[226]: Job for systemd-hostnamed.service canceled. +[ 4846.013286] systemd[1]: TEST-71-HOSTNAME.service: Main process exited, code=exited, status=1/FAILURE +[ 4846.013792] systemd[1]: TEST-71-HOSTNAME.service: Failed with result 'exit-code'. +[ 4846.021821] systemd[1]: Failed to start TEST-71-HOSTNAME.service - TEST-71-HOSTNAME. +``` +This happens when we create the stop job, but while we're waiting for +it to finish, something triggers a start of the unit and we lose to competing +start job. + +Hopefully fixes #36089. + +(cherry picked from commit 57fbe401f5ef03af503a10e9c3339d646fb84dd3) + +Related: RHEL-180923 +--- + test/units/TEST-71-HOSTNAME.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/test/units/TEST-71-HOSTNAME.sh b/test/units/TEST-71-HOSTNAME.sh +index dc3f587ea3..4cd197fc2e 100755 +--- a/test/units/TEST-71-HOSTNAME.sh ++++ b/test/units/TEST-71-HOSTNAME.sh +@@ -62,7 +62,7 @@ get_chassis() ( + ) + + stop_hostnamed() { +- systemctl stop systemd-hostnamed.service ++ systemctl stop --job-mode=replace-irreversibly systemd-hostnamed.service + # Reset trigger limit. This might fail if the unit was unloaded already, so ignore any errors. + systemctl reset-failed systemd-hostnamed || : + } diff --git a/0694-test-wait-for-coredump-to-appear-before-parsing.patch b/0694-test-wait-for-coredump-to-appear-before-parsing.patch new file mode 100644 index 0000000..07f587f --- /dev/null +++ b/0694-test-wait-for-coredump-to-appear-before-parsing.patch @@ -0,0 +1,37 @@ +From 5f934babc0352136845ee52498cf0561883145ee Mon Sep 17 00:00:00 2001 +From: Luca Boccassi +Date: Fri, 30 May 2025 22:08:39 +0100 +Subject: [PATCH] test: wait for coredump to appear before parsing + +A new core was added to the test, but the loop counter was not increased +to wait for it, so the test races against systemd-coredump's processing. + +This failed at least once in debci: + +8015s [ 32.227813] TEST-87-AUX-UTILS-VM.sh[1038]: + coredumpctl info COREDUMP_TIMESTAMP=1679509902000000 +8015s [ 32.228684] TEST-87-AUX-UTILS-VM.sh[1723]: No coredumps found. + +Follow-up for 0c49e0049b7665bb7769a13ef346fef92e1ad4d6 + +Fixes https://github.com/systemd/systemd/issues/37666 + +(cherry picked from commit 703fbb0bba7f1a1b46342d6efedda30e51d46135) + +Related: RHEL-155454 +--- + test/units/TEST-87-AUX-UTILS-VM.coredump.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/test/units/TEST-87-AUX-UTILS-VM.coredump.sh b/test/units/TEST-87-AUX-UTILS-VM.coredump.sh +index 0d7bed5609..be7f6c8722 100755 +--- a/test/units/TEST-87-AUX-UTILS-VM.coredump.sh ++++ b/test/units/TEST-87-AUX-UTILS-VM.coredump.sh +@@ -199,7 +199,7 @@ journalctl -b -n 1 --output=export --output-fields=MESSAGE,COREDUMP COREDUMP_EXE + journalctl -b -n 1 --output=export --output-fields=MESSAGE,COREDUMP COREDUMP_EXE="/usr/bin/test-dump" | + /usr/lib/systemd/systemd-coredump --backtrace $$ 0 0 6 1679509902 12345 youmachine 1 + # Wait a bit for the coredumps to get processed +-timeout 30 bash -c "while [[ \$(coredumpctl list -q --no-legend $$ | wc -l) -lt 2 ]]; do sleep 1; done" ++timeout 30 bash -c "while [[ \$(coredumpctl list -q --no-legend $$ | wc -l) -lt 3 ]]; do sleep 1; done" + coredumpctl info $$ + coredumpctl info COREDUMP_TIMESTAMP=1679509900000000 + coredumpctl info COREDUMP_TIMESTAMP=1679509901000000 diff --git a/0695-TEST-87-AUX-UTILS-VM-make-coredumps-stored-in-archiv.patch b/0695-TEST-87-AUX-UTILS-VM-make-coredumps-stored-in-archiv.patch new file mode 100644 index 0000000..b540488 --- /dev/null +++ b/0695-TEST-87-AUX-UTILS-VM-make-coredumps-stored-in-archiv.patch @@ -0,0 +1,54 @@ +From 0b43a14217a52f7774b823aca49d8443863fdc36 Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Mon, 28 Jul 2025 16:40:27 +0900 +Subject: [PATCH] TEST-87-AUX-UTILS-VM: make coredumps stored in archived + journal file + +Fixes the following race: +``` +TEST-87-AUX-UTILS-VM.sh[839]: + coredumpctl -1 +TEST-87-AUX-UTILS-VM.sh[1169]: TIME PID UID GID SIG COREFILE EXE SIZE +TEST-87-AUX-UTILS-VM.sh[1169]: Sun 2025-07-27 23:22:02 UTC 885 0 0 SIGABRT present /tmp/test-dump 19.9K +TEST-87-AUX-UTILS-VM.sh[839]: + coredumpctl -n 1 +TEST-87-AUX-UTILS-VM.sh[1172]: Journal file /var/log/journal/a8285330872602d1377cbaaf68869946/system.journal is truncated, ignoring file. +TEST-87-AUX-UTILS-VM.sh[1172]: No coredumps found. +``` + +(cherry picked from commit ab56a96194d102cb4ec279fc4eb181d16c1251ea) + +Related: RHEL-155454 +--- + test/units/TEST-87-AUX-UTILS-VM.coredump.sh | 13 ++++++++++++- + 1 file changed, 12 insertions(+), 1 deletion(-) + +diff --git a/test/units/TEST-87-AUX-UTILS-VM.coredump.sh b/test/units/TEST-87-AUX-UTILS-VM.coredump.sh +index be7f6c8722..476b8f1e83 100755 +--- a/test/units/TEST-87-AUX-UTILS-VM.coredump.sh ++++ b/test/units/TEST-87-AUX-UTILS-VM.coredump.sh +@@ -21,7 +21,8 @@ at_exit() { + + trap at_exit EXIT + +-# To make all coredump entries stored in system.journal. ++# Sync and rotate journal to make all coredump entries stored in system.journal. ++journalctl --sync + journalctl --rotate + + # Check that we're the ones to receive coredumps +@@ -107,6 +108,16 @@ EOF + unset CONTAINER + fi + ++# Sync and rotate journals (again) to make coredumps stored in archived journal. Otherwise, the main active ++# journal file may be already mostly filled with the coredumps, and may trigger rotation during the sanity ++# checks below. If coredumpctl accesses the main journal currently rotationg, then it warns the following and ++# skips reading the main journal, and cannot find the recent coredumps: ++# TEST-87-AUX-UTILS-VM.sh[839]: + coredumpctl -n 1 ++# TEST-87-AUX-UTILS-VM.sh[1172]: Journal file /var/log/journal/a8285330872602d1377cbaaf68869946/system.journal is truncated, ignoring file. ++# TEST-87-AUX-UTILS-VM.sh[1172]: No coredumps found. ++journalctl --sync ++journalctl --rotate ++ + coredumpctl + SYSTEMD_LOG_LEVEL=debug coredumpctl + coredumpctl --help diff --git a/0696-TEST-87-AUX-UTILS-VM-rotate-journal-at-one-more-plac.patch b/0696-TEST-87-AUX-UTILS-VM-rotate-journal-at-one-more-plac.patch new file mode 100644 index 0000000..68daffb --- /dev/null +++ b/0696-TEST-87-AUX-UTILS-VM-rotate-journal-at-one-more-plac.patch @@ -0,0 +1,45 @@ +From fe781e5198242baa8888619ab7f139e0e91f224c Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Thu, 4 Sep 2025 14:19:40 +0900 +Subject: [PATCH] TEST-87-AUX-UTILS-VM: rotate journal at one more place + +Follow-ups for ab56a96194d102cb4ec279fc4eb181d16c1251ea. + +Fixes the following failure: +``` +TEST-87-AUX-UTILS-VM.sh[1196]: + systemd-run --user --wait --pipe -M testuser@.host -- coredumpctl +TEST-87-AUX-UTILS-VM.sh[1840]: Running as unit: run-p1840-i1841.service; invocation ID: 325a026377aa4cffb046c5a63a8906ab +TEST-87-AUX-UTILS-VM.sh[1853]: Hint: You are currently not seeing messages from other users and the system. +TEST-87-AUX-UTILS-VM.sh[1853]: Users in groups 'adm', 'systemd-journal', 'wheel' can see all messages. +TEST-87-AUX-UTILS-VM.sh[1853]: Pass -q to turn off this notice. +TEST-87-AUX-UTILS-VM.sh[1853]: Journal file /var/log/journal/6835d335b6684b6197bf071ad66f2678/user-4711.journal is truncated, ignoring file. +TEST-87-AUX-UTILS-VM.sh[1853]: No coredumps found. +TEST-87-AUX-UTILS-VM.sh[1840]: Finished with result: exit-code +TEST-87-AUX-UTILS-VM.sh[1840]: Main processes terminated with: code=exited, status=1/FAILURE +TEST-87-AUX-UTILS-VM.sh[1840]: Service runtime: 154ms +TEST-87-AUX-UTILS-VM.sh[1840]: CPU time consumed: 78ms +TEST-87-AUX-UTILS-VM.sh[1840]: Memory peak: 21.9M (swap: 0B) +``` + +(cherry picked from commit c02f570260869eb98c448ad1d3b659a173145c03) + +Related: RHEL-155454 +--- + test/units/TEST-87-AUX-UTILS-VM.coredump.sh | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/test/units/TEST-87-AUX-UTILS-VM.coredump.sh b/test/units/TEST-87-AUX-UTILS-VM.coredump.sh +index 476b8f1e83..53cdcd8533 100755 +--- a/test/units/TEST-87-AUX-UTILS-VM.coredump.sh ++++ b/test/units/TEST-87-AUX-UTILS-VM.coredump.sh +@@ -175,6 +175,10 @@ rm -fv /run/systemd/coredump.conf.d/99-external.conf + # Wait a bit for the coredumps to get processed + timeout 30 bash -c "while [[ \$(coredumpctl list -q --no-legend $CORE_TEST_UNPRIV_BIN | wc -l) -lt 4 ]]; do sleep 1; done" + ++# Sync and rotate journal again to make the coredump stored in an archived journal. ++journalctl --sync ++journalctl --rotate ++ + # root should see coredumps from both binaries + coredumpctl info "$CORE_TEST_UNPRIV_BIN" + coredumpctl info "${CORE_TEST_UNPRIV_BIN##*/}" diff --git a/0697-udev-rules-add-missing-device-name-prefix-in-log-mes.patch b/0697-udev-rules-add-missing-device-name-prefix-in-log-mes.patch new file mode 100644 index 0000000..6a98b66 --- /dev/null +++ b/0697-udev-rules-add-missing-device-name-prefix-in-log-mes.patch @@ -0,0 +1,31 @@ +From 80d830fcaf09942a30782f2e5114455f0dbb6f94 Mon Sep 17 00:00:00 2001 +From: Yu Watanabe +Date: Sat, 9 Aug 2025 09:07:35 +0900 +Subject: [PATCH] udev-rules: add missing device name prefix in log message + +Otherwise, it is hard to find the dump in journal. With this change, +we can find the entry by e.g. +journalctl -b -u systemd-udevd.service DEVICE=eth0 + +Follow-up for b4ffb776696bdd3a7345f73956ce7551f6b449ff. + +(cherry picked from commit d858b1b10ad85fc96ff86989297a2abc6205a343) + +Resolves: RHEL-180929 +--- + src/udev/udev-rules.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c +index 4d9fbd39a5..e51b21f3cc 100644 +--- a/src/udev/udev-rules.c ++++ b/src/udev/udev-rules.c +@@ -2586,7 +2586,7 @@ static int udev_rule_apply_token_to_event( + if (r < 0) + log_event_warning_errno(event, token, r, "Failed to finalize memory stream, ignoring: %m"); + else +- log_info("%s", buf); ++ log_device_info(dev, "%s", buf); + } else { + puts("============================"); + dump_event(event, NULL); diff --git a/systemd.spec b/systemd.spec index 8f6d5b3..f833851 100644 --- a/systemd.spec +++ b/systemd.spec @@ -48,7 +48,7 @@ Url: https://systemd.io # Allow users to specify the version and release when building the rpm by # setting the %%version_override and %%release_override macros. Version: %{?version_override}%{!?version_override:257} -Release: 28%{?dist} +Release: 29%{?dist} %global stable %(c="%version"; [ "$c" = "${c#*.*}" ]; echo $?) @@ -801,6 +801,12 @@ Patch0688: 0688-Revert-pid1-enable-usrquota-support-on-dev-shm.patch Patch0689: 0689-Revert-udev-builtin-net-id-print-cescaped-bad-attrib.patch Patch0690: 0690-homectl-apply-all-member-of-groups-from-a-comma-sepa.patch Patch0691: 0691-udevadm-gracefully-handle-when-a-maked-file-is-speci.patch +Patch0692: 0692-udev-drop-redundant-checks.patch +Patch0693: 0693-TEST-71-HOSTNAME-specify-job-mode-for-the-stop-job-3.patch +Patch0694: 0694-test-wait-for-coredump-to-appear-before-parsing.patch +Patch0695: 0695-TEST-87-AUX-UTILS-VM-make-coredumps-stored-in-archiv.patch +Patch0696: 0696-TEST-87-AUX-UTILS-VM-rotate-journal-at-one-more-plac.patch +Patch0697: 0697-udev-rules-add-missing-device-name-prefix-in-log-mes.patch # Downstream-only patches (9000–9999) %endif @@ -1752,6 +1758,14 @@ rm -f .file-list-* rm -f %{name}.lang %changelog +* Tue Jul 07 2026 systemd maintenance team - 257-29 +- udev: drop redundant checks (RHEL-180923) +- TEST-71-HOSTNAME: specify job mode for the stop job (#38413) (RHEL-180923) +- test: wait for coredump to appear before parsing (RHEL-155454) +- TEST-87-AUX-UTILS-VM: make coredumps stored in archived journal file (RHEL-155454) +- TEST-87-AUX-UTILS-VM: rotate journal at one more place (RHEL-155454) +- udev-rules: add missing device name prefix in log message (RHEL-180929) + * Wed Jul 01 2026 systemd maintenance team - 257-28 - man: reword the description of "secure pager" handling (RHEL-102939) - pager: also check for $SUDO_UID (RHEL-102939)