Debrand for AlmaLinux
This commit is contained in:
commit
8f8e7886dd
27
0485-man-fix-a-missing-word.patch
Normal file
27
0485-man-fix-a-missing-word.patch
Normal file
@ -0,0 +1,27 @@
|
||||
From bf6cdeda171f12b8a9e949de869dd2168ea7ee5f Mon Sep 17 00:00:00 2001
|
||||
From: Frantisek Sumsal <frantisek@sumsal.cz>
|
||||
Date: Wed, 8 Oct 2025 17:23:31 +0200
|
||||
Subject: [PATCH] man: fix a missing word
|
||||
|
||||
Follow-up for 6d48c7cf736ced70c1c2fef1e1f03618911d04bc.
|
||||
|
||||
(cherry picked from commit 67111e1bd918f9e1b4b542d1e0fe84f1d571876e)
|
||||
|
||||
Resolves: RHEL-120277
|
||||
---
|
||||
man/systemd.resource-control.xml | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/man/systemd.resource-control.xml b/man/systemd.resource-control.xml
|
||||
index 5ad9793c7a..e4403e7274 100644
|
||||
--- a/man/systemd.resource-control.xml
|
||||
+++ b/man/systemd.resource-control.xml
|
||||
@@ -583,7 +583,7 @@ CPUWeight=20 DisableControllers=cpu / \
|
||||
an absolute number of tasks or a percentage value that is taken relative to the configured maximum
|
||||
number of tasks on the system. If assigned the special value <literal>infinity</literal>, no tasks
|
||||
limit is applied. This controls the <literal>pids.max</literal> control group attribute. For
|
||||
- details about this control group attribute, the
|
||||
+ details about this control group attribute, see the
|
||||
<ulink url="https://docs.kernel.org/admin-guide/cgroup-v2.html#pid">pids controller
|
||||
</ulink>.
|
||||
The effective configuration is reported as <varname>EffectiveTasksMax=</varname>.</para>
|
||||
@ -0,0 +1,33 @@
|
||||
From 7eea09ef7498cfe000e6cc4310ae64bb59d5bfa0 Mon Sep 17 00:00:00 2001
|
||||
From: Daan De Meyer <daan.j.demeyer@gmail.com>
|
||||
Date: Mon, 17 Mar 2025 12:28:37 +0100
|
||||
Subject: [PATCH] sd_bus_open_user_machine(): Don't shortcut without necessary
|
||||
env
|
||||
|
||||
Don't shortcut if we don't have the necessary environment variables
|
||||
set in sd_bus_open_user_machine().
|
||||
|
||||
(cherry picked from commit 9e34c34b7b027da24b084a58246c1d88bdbcc817)
|
||||
|
||||
Resolves: RHEL-129179
|
||||
---
|
||||
src/libsystemd/sd-bus/sd-bus.c | 6 ++++--
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/libsystemd/sd-bus/sd-bus.c b/src/libsystemd/sd-bus/sd-bus.c
|
||||
index 2683959db5..3ea12fc371 100644
|
||||
--- a/src/libsystemd/sd-bus/sd-bus.c
|
||||
+++ b/src/libsystemd/sd-bus/sd-bus.c
|
||||
@@ -1760,8 +1760,10 @@ _public_ int sd_bus_open_user_machine(sd_bus **ret, const char *user_and_machine
|
||||
assert_return(user_and_machine, -EINVAL);
|
||||
assert_return(ret, -EINVAL);
|
||||
|
||||
- /* Shortcut things if we'd end up on this host and as the same user. */
|
||||
- if (user_and_machine_equivalent(user_and_machine))
|
||||
+ /* Shortcut things if we'd end up on this host and as the same user and have one of the necessary
|
||||
+ * environment variables set already. */
|
||||
+ if (user_and_machine_equivalent(user_and_machine) &&
|
||||
+ (secure_getenv("DBUS_SESSION_BUS_ADDRESS") || secure_getenv("XDG_RUNTIME_DIR")))
|
||||
return sd_bus_open_user(ret);
|
||||
|
||||
r = user_and_machine_valid(user_and_machine);
|
||||
90
0487-udev-set-clock-group-for-PTP-and-RTC-devices.patch
Normal file
90
0487-udev-set-clock-group-for-PTP-and-RTC-devices.patch
Normal file
@ -0,0 +1,90 @@
|
||||
From 7f38c74a532b536c2f8b2e3a948ab1391387adca Mon Sep 17 00:00:00 2001
|
||||
From: Miroslav Lichvar <mlichvar@redhat.com>
|
||||
Date: Thu, 16 Jan 2025 15:34:47 +0100
|
||||
Subject: [PATCH] udev: set clock group for PTP and RTC devices
|
||||
|
||||
Add a new group for clock devices to enable applications like linuxptp
|
||||
to open clocks without root privileges.
|
||||
|
||||
(cherry picked from commit af96ccfc24bc4803078a46b4ef2cdeb5decdfbcd)
|
||||
|
||||
Resolves: RHEL-113051
|
||||
---
|
||||
README | 3 ++-
|
||||
meson.build | 1 +
|
||||
meson_options.txt | 2 ++
|
||||
rules.d/50-udev-default.rules.in | 2 ++
|
||||
sysusers.d/basic.conf.in | 1 +
|
||||
5 files changed, 8 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/README b/README
|
||||
index 9b84bf7e7a..b9a58389ad 100644
|
||||
--- a/README
|
||||
+++ b/README
|
||||
@@ -351,7 +351,8 @@ USERS AND GROUPS:
|
||||
need to be resolvable by getgrnam() at any time, even in the very early
|
||||
boot stages, where no other databases and network are available:
|
||||
|
||||
- audio, cdrom, dialout, disk, input, kmem, kvm, lp, render, tape, tty, video
|
||||
+ audio, cdrom, clock, dialout, disk, input, kmem, kvm, lp, render, tape,
|
||||
+ tty, video
|
||||
|
||||
During runtime, the journal daemon requires the "systemd-journal" system
|
||||
group to exist. New journal files will be readable by this group (but
|
||||
diff --git a/meson.build b/meson.build
|
||||
index cfb202eb30..873d70f8d3 100644
|
||||
--- a/meson.build
|
||||
+++ b/meson.build
|
||||
@@ -950,6 +950,7 @@ static_ugids = []
|
||||
foreach option : ['adm-gid',
|
||||
'audio-gid',
|
||||
'cdrom-gid',
|
||||
+ 'clock-gid',
|
||||
'dialout-gid',
|
||||
'disk-gid',
|
||||
'input-gid',
|
||||
diff --git a/meson_options.txt b/meson_options.txt
|
||||
index f30b3f5238..78b7c5fe30 100644
|
||||
--- a/meson_options.txt
|
||||
+++ b/meson_options.txt
|
||||
@@ -289,6 +289,8 @@ option('audio-gid', type : 'integer', value : 0,
|
||||
description : 'soft-static allocation for the "audio" group')
|
||||
option('cdrom-gid', type : 'integer', value : 0,
|
||||
description : 'soft-static allocation for the "cdrom" group')
|
||||
+option('clock-gid', type : 'integer', value : 0,
|
||||
+ description : 'soft-static allocation for the "clock" group')
|
||||
option('dialout-gid', type : 'integer', value : 0,
|
||||
description : 'soft-static allocation for the "dialout" group')
|
||||
option('disk-gid', type : 'integer', value : 0,
|
||||
diff --git a/rules.d/50-udev-default.rules.in b/rules.d/50-udev-default.rules.in
|
||||
index 08b2de7047..9264b8e021 100644
|
||||
--- a/rules.d/50-udev-default.rules.in
|
||||
+++ b/rules.d/50-udev-default.rules.in
|
||||
@@ -10,6 +10,7 @@ SUBSYSTEM=="block", KERNEL=="md*", ENV{ID_IGNORE_DISKSEQ}="1"
|
||||
|
||||
SUBSYSTEM=="virtio-ports", KERNEL=="vport*", ATTR{name}=="?*", SYMLINK+="virtio-ports/$attr{name}"
|
||||
|
||||
+SUBSYSTEM=="rtc", GROUP="clock", MODE="0660"
|
||||
# select "system RTC" or just use the first one
|
||||
SUBSYSTEM=="rtc", ATTR{hctosys}=="1", SYMLINK+="rtc"
|
||||
SUBSYSTEM=="rtc", KERNEL=="rtc0", SYMLINK+="rtc", OPTIONS+="link_priority=-100"
|
||||
@@ -30,6 +31,7 @@ SUBSYSTEM=="pci|usb|platform", IMPORT{builtin}="path_id"
|
||||
|
||||
SUBSYSTEM=="net", IMPORT{builtin}="net_driver"
|
||||
|
||||
+SUBSYSTEM=="ptp", GROUP="clock", MODE="0660"
|
||||
SUBSYSTEM=="ptp", ATTR{clock_name}=="KVM virtual PTP", SYMLINK+="ptp_kvm"
|
||||
SUBSYSTEM=="ptp", ATTR{clock_name}=="hyperv", SYMLINK+="ptp_hyperv"
|
||||
SUBSYSTEM=="ptp", ATTR{clock_name}=="s390 Physical Clock", SYMLINK+="ptp_s390_physical"
|
||||
diff --git a/sysusers.d/basic.conf.in b/sysusers.d/basic.conf.in
|
||||
index 992af346ca..baf31cb739 100644
|
||||
--- a/sysusers.d/basic.conf.in
|
||||
+++ b/sysusers.d/basic.conf.in
|
||||
@@ -25,6 +25,7 @@ g utmp {{UTMP_GID }} - -
|
||||
# Physical and virtual hardware access groups
|
||||
g audio {{AUDIO_GID }} - -
|
||||
g cdrom {{CDROM_GID }} - -
|
||||
+g clock {{CLOCK_GID }} - -
|
||||
g dialout {{DIALOUT_GID}} - -
|
||||
g disk {{DISK_GID }} - -
|
||||
g input {{INPUT_GID }} - -
|
||||
34
0488-coredump-handle-ENOBUFS-and-EMSGSIZE-the-same-way.patch
Normal file
34
0488-coredump-handle-ENOBUFS-and-EMSGSIZE-the-same-way.patch
Normal file
@ -0,0 +1,34 @@
|
||||
From f8037b1e24bf9fa72611fa1dd1492914ac2af7f9 Mon Sep 17 00:00:00 2001
|
||||
From: Michal Sekletar <msekleta@redhat.com>
|
||||
Date: Fri, 24 Oct 2025 12:55:20 +0200
|
||||
Subject: [PATCH] coredump: handle ENOBUFS and EMSGSIZE the same way
|
||||
|
||||
Depending on the runtime configuration, e.g. sysctls
|
||||
net.core.wmem_default= and net.core.rmem_default and on the actual
|
||||
message size, sendmsg() can fail also with ENOBUFS. E.g. alloc_skb()
|
||||
failure caused by net.core.[rw]mem_default=64MiB and huge fdinfo list
|
||||
from process that has 90k opened FDs.
|
||||
|
||||
We should handle this case in the same way as EMSGSIZE and drop part of
|
||||
the message.
|
||||
|
||||
(cherry picked from commit 28e62e684b631f928f1d857b04f45f0d34441675)
|
||||
|
||||
Resolves: RHEL-126122
|
||||
---
|
||||
src/coredump/coredump.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/coredump/coredump.c b/src/coredump/coredump.c
|
||||
index 412411bff7..ea4f8805f4 100644
|
||||
--- a/src/coredump/coredump.c
|
||||
+++ b/src/coredump/coredump.c
|
||||
@@ -1287,7 +1287,7 @@ static int send_iovec(const struct iovec_wrapper *iovw, int input_fd, PidRef *pi
|
||||
if (sendmsg(fd, &mh, MSG_NOSIGNAL) >= 0)
|
||||
break;
|
||||
|
||||
- if (errno == EMSGSIZE && mh.msg_iov[0].iov_len > 0) {
|
||||
+ if (IN_SET(errno, EMSGSIZE, ENOBUFS) && mh.msg_iov[0].iov_len > 0) {
|
||||
/* This field didn't fit? That's a pity. Given that this is
|
||||
* just metadata, let's truncate the field at half, and try
|
||||
* again. We append three dots, in order to show that this is
|
||||
84
0489-strv-introduce-string_strv_hashmap_remove.patch
Normal file
84
0489-strv-introduce-string_strv_hashmap_remove.patch
Normal file
@ -0,0 +1,84 @@
|
||||
From 29d63497e76eb54b060ec53614034951d6c7e454 Mon Sep 17 00:00:00 2001
|
||||
From: Yu Watanabe <watanabe.yu+github@gmail.com>
|
||||
Date: Tue, 28 Jan 2025 08:50:14 +0900
|
||||
Subject: [PATCH] strv: introduce string_strv_hashmap_remove()
|
||||
|
||||
(cherry picked from commit c540875cd3b024f64980966376637ecc284d643c)
|
||||
|
||||
Related: RHEL-126937
|
||||
---
|
||||
src/basic/strv.c | 17 +++++++++++++++++
|
||||
src/basic/strv.h | 4 ++++
|
||||
src/test/test-hashmap-plain.c | 16 ++++++++++++++++
|
||||
3 files changed, 37 insertions(+)
|
||||
|
||||
diff --git a/src/basic/strv.c b/src/basic/strv.c
|
||||
index c9c4551cdc..bbe0868226 100644
|
||||
--- a/src/basic/strv.c
|
||||
+++ b/src/basic/strv.c
|
||||
@@ -1065,6 +1065,23 @@ int fputstrv(FILE *f, char * const *l, const char *separator, bool *space) {
|
||||
|
||||
DEFINE_PRIVATE_HASH_OPS_FULL(string_strv_hash_ops, char, string_hash_func, string_compare_func, free, char*, strv_free);
|
||||
|
||||
+void string_strv_hashmap_remove(Hashmap *h, const char *key, const char *value) {
|
||||
+ assert(key);
|
||||
+
|
||||
+ if (value) {
|
||||
+ char **l = hashmap_get(h, key);
|
||||
+ if (!l)
|
||||
+ return;
|
||||
+
|
||||
+ strv_remove(l, value);
|
||||
+ if (!strv_isempty(l))
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ _unused_ _cleanup_free_ char *key_free = NULL;
|
||||
+ strv_free(hashmap_remove2(h, key, (void**) &key_free));
|
||||
+}
|
||||
+
|
||||
static int string_strv_hashmap_put_internal(Hashmap *h, const char *key, const char *value) {
|
||||
char **l;
|
||||
int r;
|
||||
diff --git a/src/basic/strv.h b/src/basic/strv.h
|
||||
index 86ba06f835..5cdc801f35 100644
|
||||
--- a/src/basic/strv.h
|
||||
+++ b/src/basic/strv.h
|
||||
@@ -258,6 +258,10 @@ int fputstrv(FILE *f, char * const *l, const char *separator, bool *space);
|
||||
#define strv_free_and_replace(a, b) \
|
||||
free_and_replace_full(a, b, strv_free)
|
||||
|
||||
+void string_strv_hashmap_remove(Hashmap *h, const char *key, const char *value);
|
||||
+static inline void string_strv_ordered_hashmap_remove(OrderedHashmap *h, const char *key, const char *value) {
|
||||
+ string_strv_hashmap_remove(PLAIN_HASHMAP(h), key, value);
|
||||
+}
|
||||
int _string_strv_hashmap_put(Hashmap **h, const char *key, const char *value HASHMAP_DEBUG_PARAMS);
|
||||
int _string_strv_ordered_hashmap_put(OrderedHashmap **h, const char *key, const char *value HASHMAP_DEBUG_PARAMS);
|
||||
#define string_strv_hashmap_put(h, k, v) _string_strv_hashmap_put(h, k, v HASHMAP_DEBUG_SRC_ARGS)
|
||||
diff --git a/src/test/test-hashmap-plain.c b/src/test/test-hashmap-plain.c
|
||||
index e1485a84d4..0fd4116d8a 100644
|
||||
--- a/src/test/test-hashmap-plain.c
|
||||
+++ b/src/test/test-hashmap-plain.c
|
||||
@@ -992,6 +992,22 @@ TEST(string_strv_hashmap) {
|
||||
|
||||
s = hashmap_get(m, "xxx");
|
||||
assert_se(strv_equal(s, STRV_MAKE("bar", "BAR")));
|
||||
+
|
||||
+ string_strv_hashmap_remove(m, "foo", "bar");
|
||||
+ ASSERT_NOT_NULL(s = hashmap_get(m, "foo"));
|
||||
+ ASSERT_TRUE(strv_equal(s, STRV_MAKE("BAR")));
|
||||
+
|
||||
+ string_strv_hashmap_remove(m, "foo", "BAR");
|
||||
+ ASSERT_NULL(hashmap_get(m, "foo"));
|
||||
+
|
||||
+ string_strv_hashmap_remove(m, "xxx", "BAR");
|
||||
+ ASSERT_NOT_NULL(s = hashmap_get(m, "xxx"));
|
||||
+ ASSERT_TRUE(strv_equal(s, STRV_MAKE("bar")));
|
||||
+
|
||||
+ string_strv_hashmap_remove(m, "xxx", "bar");
|
||||
+ ASSERT_NULL(hashmap_get(m, "xxx"));
|
||||
+
|
||||
+ ASSERT_TRUE(hashmap_isempty(m));
|
||||
}
|
||||
|
||||
TEST(hashmap_dump_sorted) {
|
||||
183
0490-unit-file-introduce-unit_file_remove_from_name_map.patch
Normal file
183
0490-unit-file-introduce-unit_file_remove_from_name_map.patch
Normal file
@ -0,0 +1,183 @@
|
||||
From 08842799a6656ea0de3921842b2e157b032b46b5 Mon Sep 17 00:00:00 2001
|
||||
From: Yu Watanabe <watanabe.yu+github@gmail.com>
|
||||
Date: Tue, 28 Jan 2025 09:55:12 +0900
|
||||
Subject: [PATCH] unit-file: introduce unit_file_remove_from_name_map()
|
||||
|
||||
(cherry picked from commit d8b34aaef24599917d4e7fa04c78fffac3afe7cf)
|
||||
|
||||
Related: RHEL-126937
|
||||
---
|
||||
src/shared/unit-file.c | 35 +++++++++++++++++
|
||||
src/shared/unit-file.h | 8 ++++
|
||||
src/test/test-unit-file.c | 81 +++++++++++++++++++++++++++++++++++++++
|
||||
3 files changed, 124 insertions(+)
|
||||
|
||||
diff --git a/src/shared/unit-file.c b/src/shared/unit-file.c
|
||||
index 5bb580285c..01e10c596d 100644
|
||||
--- a/src/shared/unit-file.c
|
||||
+++ b/src/shared/unit-file.c
|
||||
@@ -616,6 +616,41 @@ int unit_file_build_name_map(
|
||||
return 1;
|
||||
}
|
||||
|
||||
+int unit_file_remove_from_name_map(
|
||||
+ const LookupPaths *lp,
|
||||
+ uint64_t *cache_timestamp_hash,
|
||||
+ Hashmap **unit_ids_map,
|
||||
+ Hashmap **unit_names_map,
|
||||
+ Set **path_cache,
|
||||
+ const char *path) {
|
||||
+
|
||||
+ int r;
|
||||
+
|
||||
+ assert(path);
|
||||
+
|
||||
+ /* This assumes the specified path is already removed, and drops the relevant entries from the maps. */
|
||||
+
|
||||
+ /* If one of the lookup paths we are monitoring is already changed, let's rebuild the map. Then, the
|
||||
+ * new map should not contain entries relevant to the specified path. */
|
||||
+ r = unit_file_build_name_map(lp, cache_timestamp_hash, unit_ids_map, unit_names_map, path_cache);
|
||||
+ if (r != 0)
|
||||
+ return r;
|
||||
+
|
||||
+ /* If not, drop the relevant entries. */
|
||||
+
|
||||
+ _cleanup_free_ char *name = NULL;
|
||||
+ r = path_extract_filename(path, &name);
|
||||
+ if (r < 0)
|
||||
+ return log_warning_errno(r, "Failed to extract file name from '%s': %m", path);
|
||||
+
|
||||
+ _unused_ _cleanup_free_ char *key = NULL;
|
||||
+ free(hashmap_remove2(*unit_ids_map, name, (void**) &key));
|
||||
+ string_strv_hashmap_remove(*unit_names_map, name, name);
|
||||
+ free(set_remove(*path_cache, path));
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static int add_name(
|
||||
const char *unit_name,
|
||||
Set **names,
|
||||
diff --git a/src/shared/unit-file.h b/src/shared/unit-file.h
|
||||
index 1c89a92c7d..dd7dc57d15 100644
|
||||
--- a/src/shared/unit-file.h
|
||||
+++ b/src/shared/unit-file.h
|
||||
@@ -68,6 +68,14 @@ int unit_file_build_name_map(
|
||||
Hashmap **unit_names_map,
|
||||
Set **path_cache);
|
||||
|
||||
+int unit_file_remove_from_name_map(
|
||||
+ const LookupPaths *lp,
|
||||
+ uint64_t *cache_timestamp_hash,
|
||||
+ Hashmap **unit_ids_map,
|
||||
+ Hashmap **unit_names_map,
|
||||
+ Set **path_cache,
|
||||
+ const char *path);
|
||||
+
|
||||
int unit_file_find_fragment(
|
||||
Hashmap *unit_ids_map,
|
||||
Hashmap *unit_name_map,
|
||||
diff --git a/src/test/test-unit-file.c b/src/test/test-unit-file.c
|
||||
index 63e500003c..a84e6aaf97 100644
|
||||
--- a/src/test/test-unit-file.c
|
||||
+++ b/src/test/test-unit-file.c
|
||||
@@ -1,11 +1,16 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
|
||||
+#include "fileio.h"
|
||||
#include "initrd-util.h"
|
||||
#include "path-lookup.h"
|
||||
+#include "path-util.h"
|
||||
+#include "random-util.h"
|
||||
+#include "rm-rf.h"
|
||||
#include "set.h"
|
||||
#include "special.h"
|
||||
#include "strv.h"
|
||||
#include "tests.h"
|
||||
+#include "tmpfile-util.h"
|
||||
#include "unit-file.h"
|
||||
|
||||
TEST(unit_validate_alias_symlink_and_warn) {
|
||||
@@ -86,6 +91,82 @@ TEST(unit_file_build_name_map) {
|
||||
}
|
||||
}
|
||||
|
||||
+static bool test_unit_file_remove_from_name_map_trail(const LookupPaths *lp, size_t trial) {
|
||||
+ int r;
|
||||
+
|
||||
+ log_debug("/* %s(trial=%zu) */", __func__, trial);
|
||||
+
|
||||
+ _cleanup_hashmap_free_ Hashmap *unit_ids = NULL, *unit_names = NULL;
|
||||
+ _cleanup_set_free_ Set *path_cache = NULL;
|
||||
+ ASSERT_OK_POSITIVE(unit_file_build_name_map(lp, NULL, &unit_ids, &unit_names, &path_cache));
|
||||
+
|
||||
+ _cleanup_free_ char *name = NULL;
|
||||
+ for (size_t i = 0; i < 100; i++) {
|
||||
+ ASSERT_OK(asprintf(&name, "test-unit-file-%"PRIx64".service", random_u64()));
|
||||
+ if (!hashmap_contains(unit_ids, name))
|
||||
+ break;
|
||||
+ name = mfree(name);
|
||||
+ }
|
||||
+ ASSERT_NOT_NULL(name);
|
||||
+
|
||||
+ _cleanup_free_ char *path = path_join(lp->transient, name);
|
||||
+ ASSERT_NOT_NULL(path);
|
||||
+ ASSERT_OK(write_string_file(path, "[Unit]\n", WRITE_STRING_FILE_CREATE|WRITE_STRING_FILE_MKDIR_0755));
|
||||
+
|
||||
+ uint64_t cache_timestamp_hash = 0;
|
||||
+ ASSERT_OK_POSITIVE(unit_file_build_name_map(lp, &cache_timestamp_hash, &unit_ids, &unit_names, &path_cache));
|
||||
+
|
||||
+ ASSERT_STREQ(hashmap_get(unit_ids, name), path);
|
||||
+ ASSERT_TRUE(strv_equal(hashmap_get(unit_names, name), STRV_MAKE(name)));
|
||||
+ ASSERT_TRUE(set_contains(path_cache, path));
|
||||
+
|
||||
+ ASSERT_OK_ERRNO(unlink(path));
|
||||
+
|
||||
+ ASSERT_OK(r = unit_file_remove_from_name_map(lp, &cache_timestamp_hash, &unit_ids, &unit_names, &path_cache, path));
|
||||
+ if (r > 0)
|
||||
+ return false; /* someone touches unit files. Retrying. */
|
||||
+
|
||||
+ ASSERT_FALSE(hashmap_contains(unit_ids, name));
|
||||
+ ASSERT_FALSE(hashmap_contains(unit_names, path));
|
||||
+ ASSERT_FALSE(set_contains(path_cache, path));
|
||||
+
|
||||
+ _cleanup_hashmap_free_ Hashmap *unit_ids_2 = NULL, *unit_names_2 = NULL;
|
||||
+ _cleanup_set_free_ Set *path_cache_2 = NULL;
|
||||
+ ASSERT_OK_POSITIVE(unit_file_build_name_map(lp, NULL, &unit_ids_2, &unit_names_2, &path_cache_2));
|
||||
+
|
||||
+ if (hashmap_size(unit_ids) != hashmap_size(unit_ids_2) ||
|
||||
+ hashmap_size(unit_names) != hashmap_size(unit_names_2) ||
|
||||
+ !set_equal(path_cache, path_cache_2))
|
||||
+ return false;
|
||||
+
|
||||
+ const char *k, *v;
|
||||
+ HASHMAP_FOREACH_KEY(v, k, unit_ids)
|
||||
+ if (!streq_ptr(hashmap_get(unit_ids_2, k), v))
|
||||
+ return false;
|
||||
+
|
||||
+ char **l;
|
||||
+ HASHMAP_FOREACH_KEY(l, k, unit_names)
|
||||
+ if (!strv_equal_ignore_order(hashmap_get(unit_names_2, k), l))
|
||||
+ return false;
|
||||
+
|
||||
+ return true;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+TEST(unit_file_remove_from_name_map) {
|
||||
+ _cleanup_(rm_rf_physical_and_freep) char *d = NULL;
|
||||
+
|
||||
+ _cleanup_(lookup_paths_done) LookupPaths lp = {};
|
||||
+ ASSERT_OK(lookup_paths_init(&lp, RUNTIME_SCOPE_SYSTEM, LOOKUP_PATHS_TEMPORARY_GENERATED, NULL));
|
||||
+ ASSERT_NOT_NULL(d = strdup(lp.temporary_dir));
|
||||
+
|
||||
+ for (size_t i = 0; i < 10; i++)
|
||||
+ if (test_unit_file_remove_from_name_map_trail(&lp, i))
|
||||
+ return;
|
||||
+
|
||||
+ assert_not_reached();
|
||||
+}
|
||||
+
|
||||
TEST(runlevel_to_target) {
|
||||
in_initrd_force(false);
|
||||
ASSERT_STREQ(runlevel_to_target(NULL), NULL);
|
||||
@ -0,0 +1,52 @@
|
||||
From 551f1d97a7a038538dc1da50c8b6d8f25c6c236b Mon Sep 17 00:00:00 2001
|
||||
From: Yu Watanabe <watanabe.yu+github@gmail.com>
|
||||
Date: Tue, 28 Jan 2025 10:09:32 +0900
|
||||
Subject: [PATCH] core/unit: remove path to transient unit file from unit name
|
||||
maps on stop
|
||||
|
||||
Fixes #35190.
|
||||
|
||||
(cherry picked from commit fce94c5c563b8f6ede2b8f7f283d2d2faff4e062)
|
||||
|
||||
Resolves: RHEL-126937
|
||||
---
|
||||
src/core/unit.c | 15 ++++++++++++---
|
||||
1 file changed, 12 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/core/unit.c b/src/core/unit.c
|
||||
index 01e4d3a64f..556ed0eefa 100644
|
||||
--- a/src/core/unit.c
|
||||
+++ b/src/core/unit.c
|
||||
@@ -648,13 +648,11 @@ static void unit_clear_dependencies(Unit *u) {
|
||||
|
||||
static void unit_remove_transient(Unit *u) {
|
||||
assert(u);
|
||||
+ assert(u->manager);
|
||||
|
||||
if (!u->transient)
|
||||
return;
|
||||
|
||||
- if (u->fragment_path)
|
||||
- (void) unlink(u->fragment_path);
|
||||
-
|
||||
STRV_FOREACH(i, u->dropin_paths) {
|
||||
_cleanup_free_ char *p = NULL, *pp = NULL;
|
||||
|
||||
@@ -671,6 +669,17 @@ static void unit_remove_transient(Unit *u) {
|
||||
(void) unlink(*i);
|
||||
(void) rmdir(p);
|
||||
}
|
||||
+
|
||||
+ if (u->fragment_path) {
|
||||
+ (void) unlink(u->fragment_path);
|
||||
+ (void) unit_file_remove_from_name_map(
|
||||
+ &u->manager->lookup_paths,
|
||||
+ &u->manager->unit_cache_timestamp_hash,
|
||||
+ &u->manager->unit_id_map,
|
||||
+ &u->manager->unit_name_map,
|
||||
+ &u->manager->unit_path_cache,
|
||||
+ u->fragment_path);
|
||||
+ }
|
||||
}
|
||||
|
||||
static void unit_free_mounts_for(Unit *u) {
|
||||
33
0492-TEST-07-PID1-add-reprudcer-for-issue-35190.patch
Normal file
33
0492-TEST-07-PID1-add-reprudcer-for-issue-35190.patch
Normal file
@ -0,0 +1,33 @@
|
||||
From 77c49a11d4b498b22c582f24b7ce46b2d4c8753f Mon Sep 17 00:00:00 2001
|
||||
From: Yu Watanabe <watanabe.yu+github@gmail.com>
|
||||
Date: Mon, 27 Jan 2025 22:24:16 +0900
|
||||
Subject: [PATCH] TEST-07-PID1: add reprudcer for issue #35190
|
||||
|
||||
(cherry picked from commit 448e99251aa47a5986425a1783da44d1200fe733)
|
||||
|
||||
Related: RHEL-126937
|
||||
---
|
||||
test/units/TEST-07-PID1.transient.sh | 14 ++++++++++++++
|
||||
1 file changed, 14 insertions(+)
|
||||
create mode 100755 test/units/TEST-07-PID1.transient.sh
|
||||
|
||||
diff --git a/test/units/TEST-07-PID1.transient.sh b/test/units/TEST-07-PID1.transient.sh
|
||||
new file mode 100755
|
||||
index 0000000000..ae71a38143
|
||||
--- /dev/null
|
||||
+++ b/test/units/TEST-07-PID1.transient.sh
|
||||
@@ -0,0 +1,14 @@
|
||||
+#!/usr/bin/env bash
|
||||
+# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
+set -ex
|
||||
+set -o pipefail
|
||||
+
|
||||
+journalctl --sync
|
||||
+TS="$(date '+%H:%M:%S')"
|
||||
+
|
||||
+systemd-run -u hogehoge.service sleep infinity
|
||||
+systemctl daemon-reload
|
||||
+systemctl stop hogehoge.service
|
||||
+
|
||||
+journalctl --sync
|
||||
+[[ -z "$(journalctl -b -q --since "$TS" -u hogehoge.service -p notice)" ]]
|
||||
22
systemd.spec
22
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: 18%{?dist}.alma.1
|
||||
Release: 19%{?dist}.alma.1
|
||||
|
||||
%global stable %(c="%version"; [ "$c" = "${c#*.*}" ]; echo $?)
|
||||
|
||||
@ -594,6 +594,14 @@ Patch0481: 0481-coredump-when-F-pidfd-is-used-again-allow-forwarding.patch
|
||||
Patch0482: 0482-coredump-introduce-an-enum-to-wrap-dumpable-constant.patch
|
||||
Patch0483: 0483-Define-helper-to-call-PR_SET_DUMPABLE.patch
|
||||
Patch0484: 0484-coredump-fix-0-passed-as-pointer-warning.patch
|
||||
Patch0485: 0485-man-fix-a-missing-word.patch
|
||||
Patch0486: 0486-sd_bus_open_user_machine-Don-t-shortcut-without-nece.patch
|
||||
Patch0487: 0487-udev-set-clock-group-for-PTP-and-RTC-devices.patch
|
||||
Patch0488: 0488-coredump-handle-ENOBUFS-and-EMSGSIZE-the-same-way.patch
|
||||
Patch0489: 0489-strv-introduce-string_strv_hashmap_remove.patch
|
||||
Patch0490: 0490-unit-file-introduce-unit_file_remove_from_name_map.patch
|
||||
Patch0491: 0491-core-unit-remove-path-to-transient-unit-file-from-un.patch
|
||||
Patch0492: 0492-TEST-07-PID1-add-reprudcer-for-issue-35190.patch
|
||||
|
||||
# Downstream-only patches (9000–9999)
|
||||
%endif
|
||||
@ -1544,9 +1552,19 @@ rm -f .file-list-*
|
||||
rm -f %{name}.lang
|
||||
|
||||
%changelog
|
||||
* Sat Nov 22 2025 Andrew Lukoshko <alukoshko@almalinux.org> - 257-18.alma.1
|
||||
* Tue Nov 25 2025 Andrew Lukoshko <alukoshko@almalinux.org> - 257-19.alma.1
|
||||
- Debrand for AlmaLinux
|
||||
|
||||
* Fri Nov 21 2025 systemd maintenance team <systemd-maint@redhat.com> - 257-19
|
||||
- man: fix a missing word (RHEL-120277)
|
||||
- sd_bus_open_user_machine(): Don't shortcut without necessary env (RHEL-129179)
|
||||
- udev: set clock group for PTP and RTC devices (RHEL-113051)
|
||||
- coredump: handle ENOBUFS and EMSGSIZE the same way (RHEL-126122)
|
||||
- strv: introduce string_strv_hashmap_remove() (RHEL-126937)
|
||||
- unit-file: introduce unit_file_remove_from_name_map() (RHEL-126937)
|
||||
- core/unit: remove path to transient unit file from unit name maps on stop (RHEL-126937)
|
||||
- TEST-07-PID1: add reprudcer for issue #35190 (RHEL-126937)
|
||||
|
||||
* Thu Nov 20 2025 Lukáš Zaoral <lzaoral@redhat.com> - 257-18
|
||||
- spec: ukify: require python3-zstandard (RHEL-103523)
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user