From 5be6265ecbfc2f948f7eb5a5c4664c4afbf36979 Mon Sep 17 00:00:00 2001 From: Andrew Lukoshko Date: Fri, 23 Jun 2023 13:25:02 +0000 Subject: [PATCH] Revert OL modifications --- ...l-to-use-0-as-version-minor-part-to-.patch | 33 -- ...sing-netdev-for-iscsi-entry-in-fstab.patch | 92 ---- ...es-fix-for-memory-hot-add-and-remove.patch | 38 -- ...-disable-unprivileged-BPF-by-default.patch | 58 --- ...4-shutdown-get-only-active-md-arrays.patch | 69 --- ...e-fixes-for-dmesg.txt-reconstruction.patch | 491 ------------------ SPECS/systemd.spec | 30 +- 7 files changed, 2 insertions(+), 809 deletions(-) delete mode 100644 SOURCES/1000-orabug18467469-Hardcode-dm-ioctl-to-use-0-as-version-minor-part-to-.patch delete mode 100644 SOURCES/1001-Fix-missing-netdev-for-iscsi-entry-in-fstab.patch delete mode 100644 SOURCES/1002-udev-rules-fix-for-memory-hot-add-and-remove.patch delete mode 100644 SOURCES/1003-orabug32870980-disable-unprivileged-BPF-by-default.patch delete mode 100644 SOURCES/1006-orabug34467234-shutdown-get-only-active-md-arrays.patch delete mode 100644 SOURCES/1007-orabug34868110-pstore-fixes-for-dmesg.txt-reconstruction.patch diff --git a/SOURCES/1000-orabug18467469-Hardcode-dm-ioctl-to-use-0-as-version-minor-part-to-.patch b/SOURCES/1000-orabug18467469-Hardcode-dm-ioctl-to-use-0-as-version-minor-part-to-.patch deleted file mode 100644 index 4cee4b0..0000000 --- a/SOURCES/1000-orabug18467469-Hardcode-dm-ioctl-to-use-0-as-version-minor-part-to-.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 0536963a3e4bef554b29b0d93f7d9bf93d75cbdf Mon Sep 17 00:00:00 2001 -From: rpm-build -Date: Fri, 24 Feb 2023 07:49:12 -0800 -Subject: [PATCH] Hardcode dm ioctl to use "0" as version minor part to - allow co-operate with UEK3 whose dm version is lower than RHCK. - -Orabug: 18467469 -Signed-off-by: Vaughan Cao -Signed-off-by: John Sobecki -Signed-off-by: Darren Archibald -Signed-off-by: Tony Rodriguez -Reviewed-by: Laurence Rochfort -Reviewed-by: Aleksandr Burmashev ---- - src/shutdown/umount.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/shutdown/umount.c b/src/shutdown/umount.c -index e650b82..522ebb3 100644 ---- a/src/shutdown/umount.c -+++ b/src/shutdown/umount.c -@@ -495,7 +495,7 @@ static int delete_dm(MountPoint *m) { - return RET_NERRNO(ioctl(fd, DM_DEV_REMOVE, &(struct dm_ioctl) { - .version = { - DM_VERSION_MAJOR, -- DM_VERSION_MINOR, -+ 0, - DM_VERSION_PATCHLEVEL - }, - .data_size = sizeof(struct dm_ioctl), --- -2.27.0 - diff --git a/SOURCES/1001-Fix-missing-netdev-for-iscsi-entry-in-fstab.patch b/SOURCES/1001-Fix-missing-netdev-for-iscsi-entry-in-fstab.patch deleted file mode 100644 index c1a169e..0000000 --- a/SOURCES/1001-Fix-missing-netdev-for-iscsi-entry-in-fstab.patch +++ /dev/null @@ -1,92 +0,0 @@ -From efe3164e83da693f87e832c087797be8d466c306 Mon Sep 17 00:00:00 2001 -From: Tony Rodriguez -Date: Mon, 27 Feb 2023 19:30:00 +0100 -Subject: Fix missing netdev for iscsi entry in fstab - -Orabug: 25897792 - - -To check every entry of fstab whether it is iscsi and then set it -to remote-fs.target on the corresponding ".mount' file. We use -find_device() to find the corresponding device using the udev -function. - -Signed-off-by: Tony Lam -Signed-off-by: Alex Burmashev -Signed-off-by: Darren Archibald -Signed-off-by: Tony Rodriguez -Reviewed-by: Laurence Rochfort -Reviewed-by: Aleksandr Burmashev ---- - -diff -Nur systemd-252.orig/meson.build systemd-252/meson.build ---- systemd-252.orig/meson.build 2023-02-27 12:30:47.814831419 -0800 -+++ systemd-252/meson.build 2023-02-27 12:30:41.084646203 -0800 -@@ -2351,7 +2351,9 @@ - exe = executable( - 'systemd-fstab-generator', - 'src/fstab-generator/fstab-generator.c', -- include_directories : includes, -+ 'src/udev/udevadm-util.c', -+ 'src/libsystemd/sd-device/device-util.c', -+ include_directories : [includes, udev_includes], - link_with : [libshared], - install_rpath : rootpkglibdir, - install : true, - -diff -Nur systemd-252.orig/src/fstab-generator/fstab-generator.c systemd-252/src/fstab-generator/fstab-generator.c ---- systemd-252.orig/src/fstab-generator/fstab-generator.c 2023-02-27 15:36:14.629052661 -0800 -+++ systemd-252/src/fstab-generator/fstab-generator.c 2023-02-27 18:21:13.382354633 -0800 -@@ -32,6 +32,8 @@ - #include "util.h" - #include "virt.h" - #include "volatile-util.h" -+#include "device-util.h" -+#include "udevadm-util.h" - - typedef enum MountPointFlags { - MOUNT_NOAUTO = 1 << 0, -@@ -735,6 +737,9 @@ - k = add_swap(fstab, what, me, flags); - else { - bool rw_only, automount; -+ const char *name; -+ _cleanup_(sd_device_unrefp) sd_device *device = NULL; -+ int st; - - rw_only = fstab_test_option(me->mnt_opts, "x-systemd.rw-only\0"); - automount = fstab_test_option(me->mnt_opts, -@@ -749,6 +754,33 @@ - mount_is_network(me) ? SPECIAL_REMOTE_FS_TARGET : - SPECIAL_LOCAL_FS_TARGET; - -+ if (target_unit && strcmp(target_unit, SPECIAL_LOCAL_FS_TARGET) == 0){ -+ st = find_device(what, NULL, &device); -+ if (st < 0 || !device) { -+ /* For local device, find_device() will always be successful. For iscsi, -+ during bootup time, find_device() may fail, so we set to REMOTE-FS -+ if find_device() failed */ -+ -+ target_unit = SPECIAL_REMOTE_FS_TARGET; -+ log_debug("set %s SPECIAL_REMOTE_FS_TARGET since device is NULL or find_device() return code is %d", what, st); -+ } -+ else { -+ log_debug("device found %s: %p", where, device); -+ -+ FOREACH_DEVICE_DEVLINK(device, name) { -+ if (name && strstr(name, "iscsi")) { -+ target_unit = SPECIAL_REMOTE_FS_TARGET; -+ log_debug("set %s SPECIAL_REMOTE_FS_TARGET ", what); -+ break; -+ } -+ } -+ -+ if (strcmp(target_unit, SPECIAL_LOCAL_FS_TARGET) == 0) -+ log_debug("set %s SPECIAL_LOCAL_FS_TARGET ", what); -+ } -+ } -+ -+ - k = add_mount(fstab, - arg_dest, - what, diff --git a/SOURCES/1002-udev-rules-fix-for-memory-hot-add-and-remove.patch b/SOURCES/1002-udev-rules-fix-for-memory-hot-add-and-remove.patch deleted file mode 100644 index ef49cee..0000000 --- a/SOURCES/1002-udev-rules-fix-for-memory-hot-add-and-remove.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 4dd615f7727cfc52f9b6b3c7f88425631326477f Mon Sep 17 00:00:00 2001 -From: Aleksandr Burmashev -Date: Fri, 4 Feb 2022 13:12:14 +0100 -Subject: udev rules: fix for memory hot add and remove - -This patch allows hot added memory for kvm guests to be -onlined as 'online_movable', thus facilitating removal -of the same hot added memory at a later point in time. - -The use of 'online_movable' prevents kernel allocations -from occuring within the memory. Kernel allocations -tend to be persistent, and thus prevent removal of -memory. - - -Orabug: 31310273 -Signed-off-by: Eric DeVolder -Reviewed-by: Tony Rodriguez -Reviewed-by: Laurence Rochfort ---- - rules.d/40-redhat.rules | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/rules.d/40-redhat.rules b/rules.d/40-redhat.rules -index 3c95cd2..43c8ab4 100644 ---- a/rules.d/40-redhat.rules -+++ b/rules.d/40-redhat.rules -@@ -11,6 +11,7 @@ CONST{arch}=="ppc64*", GOTO="memory_hotplug_end" - - ENV{.state}="online" - CONST{virt}=="none", ENV{.state}="online_movable" -+CONST{virt}=="kvm", ENV{.state}="online_movable" - ATTR{state}=="offline", ATTR{state}="$env{.state}" - - LABEL="memory_hotplug_end" --- -2.27.0 - diff --git a/SOURCES/1003-orabug32870980-disable-unprivileged-BPF-by-default.patch b/SOURCES/1003-orabug32870980-disable-unprivileged-BPF-by-default.patch deleted file mode 100644 index b72b71c..0000000 --- a/SOURCES/1003-orabug32870980-disable-unprivileged-BPF-by-default.patch +++ /dev/null @@ -1,58 +0,0 @@ -From 949d205261192998ed612da48e6d06429c8de629 Mon Sep 17 00:00:00 2001 -From: Aleksandr Burmashev -Date: Fri, 4 Feb 2022 13:24:09 +0100 -Subject: Disable unprivileged BPF by default - -There are several CVEs whose mitigation is to disable unprivileged BPF -by default. While all these can, and should, be fixed the issues keep -arising and to be defensive we need to disable unprivileged BPF. -Note that the upstream kernel _does_ permit unprivileged BPF and so -this patch is not suggesting making a change there; this is a non-invasive, -safe, reversible change. - -This patch simply adds this /usr/lib/sysctl.d/01-unprivileged-bpf.conf -to systemd with this content: - -~~ -kernel.unprivileged_bpf_disabled=1 -~~ - -Orabug: 32870980 - -Suggested-by: John Haxby -Signed-off-by: Isaac Chen -Reviewed-by: Tony Rodriguez -Reviewed-by: Laurence Rochfort ---- - sysctl.d/01-unprivileged-bpf.conf | 6 ++++++ - sysctl.d/meson.build | 1 + - 2 files changed, 7 insertions(+) - create mode 100644 sysctl.d/01-unprivileged-bpf.conf - -diff --git a/sysctl.d/01-unprivileged-bpf.conf b/sysctl.d/01-unprivileged-bpf.conf -new file mode 100644 -index 0000000..1f230ea ---- /dev/null -+++ b/sysctl.d/01-unprivileged-bpf.conf -@@ -0,0 +1,6 @@ -+# When running UEK, this file ensures that unprivileged BPF is disabled by -+# default. To enable it, copy this file to /etc/sysctl.d, comment out the -+# last line and reboot. -+# -+# You may also need to rebuild your initramfs with "dracut -f". -+kernel.unprivileged_bpf_disabled=1 -diff --git a/sysctl.d/meson.build b/sysctl.d/meson.build -index 6f3db59..07f395d 100644 ---- a/sysctl.d/meson.build -+++ b/sysctl.d/meson.build -@@ -3,6 +3,7 @@ - install_data( - 'README', - '50-default.conf', -+ '01-unprivileged-bpf.conf', - install_dir : sysctldir) - - # Kernel determines PID_MAX_LIMIT by --- -2.27.0 - diff --git a/SOURCES/1006-orabug34467234-shutdown-get-only-active-md-arrays.patch b/SOURCES/1006-orabug34467234-shutdown-get-only-active-md-arrays.patch deleted file mode 100644 index 178dfa5..0000000 --- a/SOURCES/1006-orabug34467234-shutdown-get-only-active-md-arrays.patch +++ /dev/null @@ -1,69 +0,0 @@ -From 3a3b022d2cc112803ea7b9beea98bbcad110368a Mon Sep 17 00:00:00 2001 -From: Mariusz Tkaczyk -Date: Tue, 29 Mar 2022 12:49:54 +0200 -Subject: [PATCH] shutdown: get only active md arrays. - -Current md_list_get() implementation filters all block devices, started from -"md*". This is ambiguous because list could contain: -- partitions created upon md device (mdXpY) -- external metadata container- specific type of md array. - -For partitions there is no issue, because they aren't handle STOP_ARRAY -ioctl sent later. It generates misleading errors only. - -Second case is more problematic because containers are not locked in kernel. -They are stopped even if container member array is active. For that reason -reboot or shutdown flow could be blocked because metadata manager cannot be -restarted after switch root on shutdown. - -Add filters to remove partitions and containers from md_list. Partitions -can be excluded by DEVTYPE. Containers are determined by MD_LEVEL -property, we are excluding all with "container" value. - -Signed-off-by: Mariusz Tkaczyk - -Orabug: 34467234 -Signed-off-by: Shaleen Bathla -Reviewed-by: Laurence Rochfort ---- - src/shutdown/umount.c | 18 +++++++++++++++++- - 1 file changed, 17 insertions(+), 1 deletion(-) - -diff --git a/src/shutdown/umount.c b/src/shutdown/umount.c -index 3e9e241499a5..820aa8e28685 100644 ---- a/src/shutdown/umount.c -+++ b/src/shutdown/umount.c -@@ -352,9 +352,14 @@ static int md_list_get(MountPoint **head) { - if (r < 0) - return r; - -+ /* Filter out partitions. */ -+ r = sd_device_enumerator_add_match_property(e, "DEVTYPE", "disk"); -+ if (r < 0) -+ return r; -+ - FOREACH_DEVICE(e, d) { - _cleanup_free_ char *p = NULL; -- const char *dn; -+ const char *dn, *md_level; - MountPoint *m; - dev_t devnum; - -@@ -362,6 +367,17 @@ static int md_list_get(MountPoint **head) { - sd_device_get_devname(d, &dn) < 0) - continue; - -+ r = sd_device_get_property_value(d, "MD_LEVEL", &md_level); -+ if (r < 0) { -+ log_warning_errno(r, "Failed to get MD_LEVEL property for %s, ignoring: %m", dn); -+ continue; -+ } -+ -+ /* MD "containers" are a special type of MD devices, used for external metadata. -+ * Since it doesn't provide RAID functionality in itself we don't need to stop it. */ -+ if (streq(md_level, "container")) -+ continue; -+ - p = strdup(dn); - if (!p) - return -ENOMEM; diff --git a/SOURCES/1007-orabug34868110-pstore-fixes-for-dmesg.txt-reconstruction.patch b/SOURCES/1007-orabug34868110-pstore-fixes-for-dmesg.txt-reconstruction.patch deleted file mode 100644 index 7bf1748..0000000 --- a/SOURCES/1007-orabug34868110-pstore-fixes-for-dmesg.txt-reconstruction.patch +++ /dev/null @@ -1,491 +0,0 @@ -From 5fbaa757077bde2db8d33b1c358518c41b990339 Mon Sep 17 00:00:00 2001 -From: Eric DeVolder -Date: Mon, 21 Nov 2022 11:27:27 -0500 -Subject: [PATCH] pstore: fixes for dmesg.txt reconstruction - -This patch fixes problems with the re-assembly of the dmesg -from the records stored in pstore. - -The current code simply ignores the last 6 characters of the -file name to form a base record id, which then groups any -pstore files with this base id into the reconstructed dmesg.txt. -This approach fails when the following oops generated the -following in pstore: - - -rw-------. 1 root root 1808 Oct 27 22:07 dmesg-efi-166692286101001 - -rw-------. 1 root root 1341 Oct 27 22:07 dmesg-efi-166692286101002 - -rw-------. 1 root root 1812 Oct 27 22:07 dmesg-efi-166692286102001 - -rw-------. 1 root root 1820 Oct 27 22:07 dmesg-efi-166692286102002 - -rw-------. 1 root root 1807 Oct 27 22:07 dmesg-efi-166692286103001 - -rw-------. 1 root root 1791 Oct 27 22:07 dmesg-efi-166692286103002 - -rw-------. 1 root root 1773 Oct 27 22:07 dmesg-efi-166692286104001 - -rw-------. 1 root root 1801 Oct 27 22:07 dmesg-efi-166692286104002 - -rw-------. 1 root root 1821 Oct 27 22:07 dmesg-efi-166692286105001 - -rw-------. 1 root root 1809 Oct 27 22:07 dmesg-efi-166692286105002 - -rw-------. 1 root root 1804 Oct 27 22:07 dmesg-efi-166692286106001 - -rw-------. 1 root root 1817 Oct 27 22:07 dmesg-efi-166692286106002 - -rw-------. 1 root root 1792 Oct 27 22:07 dmesg-efi-166692286107001 - -rw-------. 1 root root 1810 Oct 27 22:07 dmesg-efi-166692286107002 - -rw-------. 1 root root 1717 Oct 27 22:07 dmesg-efi-166692286108001 - -rw-------. 1 root root 1808 Oct 27 22:07 dmesg-efi-166692286108002 - -rw-------. 1 root root 1764 Oct 27 22:07 dmesg-efi-166692286109001 - -rw-------. 1 root root 1765 Oct 27 22:07 dmesg-efi-166692286109002 - -rw-------. 1 root root 1796 Oct 27 22:07 dmesg-efi-166692286110001 - -rw-------. 1 root root 1816 Oct 27 22:07 dmesg-efi-166692286110002 - -rw-------. 1 root root 1793 Oct 27 22:07 dmesg-efi-166692286111001 - -rw-------. 1 root root 1751 Oct 27 22:07 dmesg-efi-166692286111002 - -rw-------. 1 root root 1813 Oct 27 22:07 dmesg-efi-166692286112001 - -rw-------. 1 root root 1786 Oct 27 22:07 dmesg-efi-166692286112002 - -rw-------. 1 root root 1754 Oct 27 22:07 dmesg-efi-166692286113001 - -rw-------. 1 root root 1752 Oct 27 22:07 dmesg-efi-166692286113002 - -rw-------. 1 root root 1803 Oct 27 22:07 dmesg-efi-166692286114001 - -rw-------. 1 root root 1759 Oct 27 22:07 dmesg-efi-166692286114002 - -rw-------. 1 root root 1805 Oct 27 22:07 dmesg-efi-166692286115001 - -rw-------. 1 root root 1787 Oct 27 22:07 dmesg-efi-166692286115002 - -rw-------. 1 root root 1815 Oct 27 22:07 dmesg-efi-166692286116001 - -rw-------. 1 root root 1771 Oct 27 22:07 dmesg-efi-166692286116002 - -rw-------. 1 root root 1816 Oct 27 22:07 dmesg-efi-166692286117002 - -rw-------. 1 root root 1388 Oct 27 22:07 dmesg-efi-166692286701003 - -rw-------. 1 root root 1824 Oct 27 22:07 dmesg-efi-166692286702003 - -rw-------. 1 root root 1795 Oct 27 22:07 dmesg-efi-166692286703003 - -rw-------. 1 root root 1805 Oct 27 22:07 dmesg-efi-166692286704003 - -rw-------. 1 root root 1813 Oct 27 22:07 dmesg-efi-166692286705003 - -rw-------. 1 root root 1821 Oct 27 22:07 dmesg-efi-166692286706003 - -rw-------. 1 root root 1814 Oct 27 22:07 dmesg-efi-166692286707003 - -rw-------. 1 root root 1812 Oct 27 22:07 dmesg-efi-166692286708003 - -rw-------. 1 root root 1769 Oct 27 22:07 dmesg-efi-166692286709003 - -rw-------. 1 root root 1820 Oct 27 22:07 dmesg-efi-166692286710003 - -rw-------. 1 root root 1755 Oct 27 22:07 dmesg-efi-166692286711003 - -rw-------. 1 root root 1790 Oct 27 22:07 dmesg-efi-166692286712003 - -rw-------. 1 root root 1756 Oct 27 22:07 dmesg-efi-166692286713003 - -rw-------. 1 root root 1763 Oct 27 22:07 dmesg-efi-166692286714003 - -rw-------. 1 root root 1791 Oct 27 22:07 dmesg-efi-166692286715003 - -rw-------. 1 root root 1775 Oct 27 22:07 dmesg-efi-166692286716003 - -rw-------. 1 root root 1820 Oct 27 22:07 dmesg-efi-166692286717003 - -The "reconstructed" dmesg.txt that resulted from the above contained -the following (ignoring actual contents, just providing the Part info): - - Emergency#3 Part17 - Emergency#3 Part16 - Emergency#3 Part15 - Emergency#3 Part14 - Emergency#3 Part13 - Emergency#3 Part12 - Emergency#3 Part11 - Emergency#3 Part10 - Emergency#3 Part9 - Emergency#3 Part8 - Emergency#3 Part7 - Emergency#3 Part6 - Emergency#3 Part5 - Emergency#3 Part4 - Emergency#3 Part3 - Emergency#3 Part2 - Emergency#3 Part1 - Panic#2 Part17 - Panic#2 Part16 - Oops#1 Part16 - Panic#2 Part15 - Oops#1 Part15 - Panic#2 Part14 - Oops#1 Part14 - Panic#2 Part13 - Oops#1 Part13 - Panic#2 Part12 - Oops#1 Part12 - Panic#2 Part11 - Oops#1 Part11 - Panic#2 Part10 - Oops#1 Part10 - Panic#2 Part9 - Oops#1 Part9 - Panic#2 Part8 - Oops#1 Part8 - Panic#2 Part7 - Oops#1 Part7 - Panic#2 Part6 - Oops#1 Part6 - Panic#2 Part5 - Oops#1 Part5 - Panic#2 Part4 - Oops#1 Part4 - Panic#2 Part3 - Oops#1 Part3 - Panic#2 Part2 - Oops#1 Part2 - Panic#2 Part1 - Oops#1 Part1 - -The above is a interleaved mess of three dmesg dumps. - -This patch fixes the above problems, and simplifies the dmesg -reconstruction process. The code now distinguishes between -records on EFI vs ERST, which have differently formatted -record identifiers. Using knowledge of the format of the -record ids allows vastly improved reconstruction process. - -With this change in place, the above pstore records now -result in the following: - - # ls -alR /var/lib/systemd/pstore - 1666922861: - total 8 - drwxr-xr-x. 4 root root 28 Nov 18 14:58 . - drwxr-xr-x. 7 root root 144 Nov 18 14:58 .. - drwxr-xr-x. 2 root root 4096 Nov 18 14:58 001 - drwxr-xr-x. 2 root root 4096 Nov 18 14:58 002 - - 1666922861/001: - total 100 - drwxr-xr-x. 2 root root 4096 Nov 18 14:58 . - drwxr-xr-x. 4 root root 28 Nov 18 14:58 .. - -rw-------. 1 root root 1808 Oct 27 22:07 dmesg-efi-166692286101001 - -rw-------. 1 root root 1812 Oct 27 22:07 dmesg-efi-166692286102001 - -rw-------. 1 root root 1807 Oct 27 22:07 dmesg-efi-166692286103001 - -rw-------. 1 root root 1773 Oct 27 22:07 dmesg-efi-166692286104001 - -rw-------. 1 root root 1821 Oct 27 22:07 dmesg-efi-166692286105001 - -rw-------. 1 root root 1804 Oct 27 22:07 dmesg-efi-166692286106001 - -rw-------. 1 root root 1792 Oct 27 22:07 dmesg-efi-166692286107001 - -rw-------. 1 root root 1717 Oct 27 22:07 dmesg-efi-166692286108001 - -rw-------. 1 root root 1764 Oct 27 22:07 dmesg-efi-166692286109001 - -rw-------. 1 root root 1796 Oct 27 22:07 dmesg-efi-166692286110001 - -rw-------. 1 root root 1793 Oct 27 22:07 dmesg-efi-166692286111001 - -rw-------. 1 root root 1813 Oct 27 22:07 dmesg-efi-166692286112001 - -rw-------. 1 root root 1754 Oct 27 22:07 dmesg-efi-166692286113001 - -rw-------. 1 root root 1803 Oct 27 22:07 dmesg-efi-166692286114001 - -rw-------. 1 root root 1805 Oct 27 22:07 dmesg-efi-166692286115001 - -rw-------. 1 root root 1815 Oct 27 22:07 dmesg-efi-166692286116001 - -rw-r-----. 1 root root 28677 Nov 18 14:58 dmesg.txt - - 1666922861/002: - total 104 - drwxr-xr-x. 2 root root 4096 Nov 18 14:58 . - drwxr-xr-x. 4 root root 28 Nov 18 14:58 .. - -rw-------. 1 root root 1341 Oct 27 22:07 dmesg-efi-166692286101002 - -rw-------. 1 root root 1820 Oct 27 22:07 dmesg-efi-166692286102002 - -rw-------. 1 root root 1791 Oct 27 22:07 dmesg-efi-166692286103002 - -rw-------. 1 root root 1801 Oct 27 22:07 dmesg-efi-166692286104002 - -rw-------. 1 root root 1809 Oct 27 22:07 dmesg-efi-166692286105002 - -rw-------. 1 root root 1817 Oct 27 22:07 dmesg-efi-166692286106002 - -rw-------. 1 root root 1810 Oct 27 22:07 dmesg-efi-166692286107002 - -rw-------. 1 root root 1808 Oct 27 22:07 dmesg-efi-166692286108002 - -rw-------. 1 root root 1765 Oct 27 22:07 dmesg-efi-166692286109002 - -rw-------. 1 root root 1816 Oct 27 22:07 dmesg-efi-166692286110002 - -rw-------. 1 root root 1751 Oct 27 22:07 dmesg-efi-166692286111002 - -rw-------. 1 root root 1786 Oct 27 22:07 dmesg-efi-166692286112002 - -rw-------. 1 root root 1752 Oct 27 22:07 dmesg-efi-166692286113002 - -rw-------. 1 root root 1759 Oct 27 22:07 dmesg-efi-166692286114002 - -rw-------. 1 root root 1787 Oct 27 22:07 dmesg-efi-166692286115002 - -rw-------. 1 root root 1771 Oct 27 22:07 dmesg-efi-166692286116002 - -rw-------. 1 root root 1816 Oct 27 22:07 dmesg-efi-166692286117002 - -rw-r-----. 1 root root 30000 Nov 18 14:58 dmesg.txt - - 1666922867: - total 4 - drwxr-xr-x. 3 root root 17 Nov 18 14:58 . - drwxr-xr-x. 7 root root 144 Nov 18 14:58 .. - drwxr-xr-x. 2 root root 4096 Nov 18 14:58 003 - - 1666922867/003: - total 104 - drwxr-xr-x. 2 root root 4096 Nov 18 14:58 . - drwxr-xr-x. 3 root root 17 Nov 18 14:58 .. - -rw-------. 1 root root 1388 Oct 27 22:07 dmesg-efi-166692286701003 - -rw-------. 1 root root 1824 Oct 27 22:07 dmesg-efi-166692286702003 - -rw-------. 1 root root 1795 Oct 27 22:07 dmesg-efi-166692286703003 - -rw-------. 1 root root 1805 Oct 27 22:07 dmesg-efi-166692286704003 - -rw-------. 1 root root 1813 Oct 27 22:07 dmesg-efi-166692286705003 - -rw-------. 1 root root 1821 Oct 27 22:07 dmesg-efi-166692286706003 - -rw-------. 1 root root 1814 Oct 27 22:07 dmesg-efi-166692286707003 - -rw-------. 1 root root 1812 Oct 27 22:07 dmesg-efi-166692286708003 - -rw-------. 1 root root 1769 Oct 27 22:07 dmesg-efi-166692286709003 - -rw-------. 1 root root 1820 Oct 27 22:07 dmesg-efi-166692286710003 - -rw-------. 1 root root 1755 Oct 27 22:07 dmesg-efi-166692286711003 - -rw-------. 1 root root 1790 Oct 27 22:07 dmesg-efi-166692286712003 - -rw-------. 1 root root 1756 Oct 27 22:07 dmesg-efi-166692286713003 - -rw-------. 1 root root 1763 Oct 27 22:07 dmesg-efi-166692286714003 - -rw-------. 1 root root 1791 Oct 27 22:07 dmesg-efi-166692286715003 - -rw-------. 1 root root 1775 Oct 27 22:07 dmesg-efi-166692286716003 - -rw-------. 1 root root 1820 Oct 27 22:07 dmesg-efi-166692286717003 - -rw-r-----. 1 root root 30111 Nov 18 14:58 dmesg.txt - -Furthemore, pstore records on ERST are now able to accurately -identify the change in timestamp sequence in order to start a -new dmesg.txt, as needed. ---- - src/pstore/pstore.c | 204 ++++++++++++++++++-------------------------- - 1 file changed, 83 insertions(+), 121 deletions(-) - -diff --git a/src/pstore/pstore.c b/src/pstore/pstore.c -index f8e6582d5b..6c3d577507 100644 ---- a/src/pstore/pstore.c -+++ b/src/pstore/pstore.c -@@ -114,7 +114,7 @@ static int compare_pstore_entries(const PStoreEntry *a, const PStoreEntry *b) { - return strcmp(a->dirent.d_name, b->dirent.d_name); - } - --static int move_file(PStoreEntry *pe, const char *subdir) { -+static int move_file(PStoreEntry *pe, const char *subdir1, const char *subdir2) { - _cleanup_free_ char *ifd_path = NULL, *ofd_path = NULL; - _cleanup_free_ void *field = NULL; - const char *suffix, *message; -@@ -128,7 +128,7 @@ static int move_file(PStoreEntry *pe, const char *subdir) { - if (!ifd_path) - return log_oom(); - -- ofd_path = path_join(arg_archivedir, subdir, pe->dirent.d_name); -+ ofd_path = path_join(arg_archivedir, subdir1, subdir2, pe->dirent.d_name); - if (!ofd_path) - return log_oom(); - -@@ -171,153 +171,115 @@ static int move_file(PStoreEntry *pe, const char *subdir) { - return 0; - } - --static int write_dmesg(const char *dmesg, size_t size, const char *id) { -- _cleanup_(unlink_and_freep) char *tmp_path = NULL; -+static int append_dmesg(PStoreEntry *pe, const char *subdir1, const char *subdir2) { -+ /* Append dmesg chunk to end, create if needed */ - _cleanup_free_ char *ofd_path = NULL; - _cleanup_close_ int ofd = -1; - ssize_t wr; -- int r; - -- if (size == 0) -- return 0; -+ assert(pe); - -- assert(dmesg); -+ if (pe->content_size == 0) -+ return 0; - -- ofd_path = path_join(arg_archivedir, id, "dmesg.txt"); -+ ofd_path = path_join(arg_archivedir, subdir1, subdir2, "dmesg.txt"); - if (!ofd_path) - return log_oom(); - -- ofd = open_tmpfile_linkable(ofd_path, O_CLOEXEC|O_CREAT|O_TRUNC|O_WRONLY, &tmp_path); -+ ofd = open(ofd_path, O_CREAT|O_NOFOLLOW|O_NOCTTY|O_CLOEXEC|O_APPEND|O_WRONLY, 0640); - if (ofd < 0) -- return log_error_errno(ofd, "Failed to open temporary file %s: %m", ofd_path); -- wr = write(ofd, dmesg, size); -+ return log_error_errno(ofd, "Failed to open file %s: %m", ofd_path); -+ wr = write(ofd, pe->content, pe->content_size); - if (wr < 0) - return log_error_errno(errno, "Failed to store dmesg to %s: %m", ofd_path); -- if (wr != (ssize_t)size) -- return log_error_errno(SYNTHETIC_ERRNO(EIO), "Failed to store dmesg to %s. %zu bytes are lost.", ofd_path, size - wr); -- r = link_tmpfile(ofd, tmp_path, ofd_path); -- if (r < 0) -- return log_error_errno(r, "Failed to write temporary file %s: %m", ofd_path); -- tmp_path = mfree(tmp_path); -+ if ((size_t)wr != pe->content_size) -+ return log_error_errno(SYNTHETIC_ERRNO(EIO), "Failed to store dmesg to %s. %zu bytes are lost.", ofd_path, pe->content_size - wr); - - return 0; - } - --static void process_dmesg_files(PStoreList *list) { -+static int process_dmesg_files(PStoreList *list) { - /* Move files, reconstruct dmesg.txt */ -- _cleanup_free_ char *dmesg = NULL, *dmesg_id = NULL; -- size_t dmesg_size = 0; -- bool dmesg_bad = false; -- PStoreEntry *pe; -+ _cleanup_free_ char *erst_subdir = NULL; -+ uint64_t last_record_id = 0; -+ -+ /* When dmesg is written into pstore, it is done so in small chunks, whatever the exchange buffer -+ * size is with the underlying pstore backend (ie. EFI may be ~2KiB), which means an example -+ * pstore with approximately 64KB of storage may have up to roughly 32 dmesg files, some likely -+ * related. -+ * -+ * Here we look at the dmesg filename and try to discern if files are part of a related group, -+ * meaning the same original dmesg. -+ * -+ * The dmesg- filename contains the backend-type and the Common Platform Error Record, CPER, -+ * record id, a 64-bit number. -+ * -+ * Files are processed in reverse lexigraphical order so as to properly reconstruct original dmesg.*/ - -- /* Handle each dmesg file: files processed in reverse -- * order so as to properly reconstruct original dmesg */ - for (size_t n = list->n_entries; n > 0; n--) { -- bool move_file_and_continue = false; -- _cleanup_free_ char *pe_id = NULL; -+ PStoreEntry *pe; - char *p; -- size_t plen; - - pe = &list->entries[n-1]; - - if (pe->handled) - continue; -- if (!startswith(pe->dirent.d_name, "dmesg-")) -- continue; -- - if (endswith(pe->dirent.d_name, ".enc.z")) /* indicates a problem */ -- move_file_and_continue = true; -- p = strrchr(pe->dirent.d_name, '-'); -- if (!p) -- move_file_and_continue = true; -- -- if (move_file_and_continue) { -- /* A dmesg file on which we do NO additional processing */ -- (void) move_file(pe, NULL); -- continue; -- } -- -- /* See if this file is one of a related group of files -- * in order to reconstruct dmesg */ -- -- /* When dmesg is written into pstore, it is done so in -- * small chunks, whatever the exchange buffer size is -- * with the underlying pstore backend (ie. EFI may be -- * ~2KiB), which means an example pstore with approximately -- * 64KB of storage may have up to roughly 32 dmesg files -- * that could be related, depending upon the size of the -- * original dmesg. -- * -- * Here we look at the dmesg filename and try to discern -- * if files are part of a related group, meaning the same -- * original dmesg. -- * -- * The two known pstore backends are EFI and ERST. These -- * backends store data in the Common Platform Error -- * Record, CPER, format. The dmesg- filename contains the -- * CPER record id, a 64bit number (in decimal notation). -- * In Linux, the record id is encoded with two digits for -- * the dmesg part (chunk) number and 3 digits for the -- * count number. So allowing an additional digit to -- * compensate for advancing time, this code ignores the -- * last six digits of the filename in determining the -- * record id. -- * -- * For the EFI backend, the record id encodes an id in the -- * upper 32 bits, and a timestamp in the lower 32-bits. -- * So ignoring the least significant 6 digits has proven -- * to generally identify related dmesg entries. */ --#define PSTORE_FILENAME_IGNORE 6 -- -- /* determine common portion of record id */ -- ++p; /* move beyond dmesg- */ -- plen = strlen(p); -- if (plen > PSTORE_FILENAME_IGNORE) { -- pe_id = memdup_suffix0(p, plen - PSTORE_FILENAME_IGNORE); -- if (!pe_id) { -- log_oom(); -- return; -- } -- } else -- pe_id = mfree(pe_id); -- -- /* Now move file from pstore to archive storage */ -- move_file(pe, pe_id); -- -- if (dmesg_bad) - continue; -- -- /* If the current record id is NOT the same as the -- * previous record id, then start a new dmesg.txt file */ -- if (!streq_ptr(pe_id, dmesg_id)) { -- /* Encountered a new dmesg group, close out old one, open new one */ -- (void) write_dmesg(dmesg, dmesg_size, dmesg_id); -- dmesg_size = 0; -- -- /* now point dmesg_id to storage of pe_id */ -- free_and_replace(dmesg_id, pe_id); -- } -- -- /* Reconstruction of dmesg is done as a useful courtesy: do not fail, but don't write garbled -- * output either. */ -- size_t needed = strlen(pe->dirent.d_name) + strlen(":\n") + pe->content_size + 1; -- if (!GREEDY_REALLOC(dmesg, dmesg_size + needed)) { -- log_oom(); -- dmesg_bad = true; -+ if (!startswith(pe->dirent.d_name, "dmesg-")) - continue; -- } -- -- dmesg_size += sprintf(dmesg + dmesg_size, "%s:\n", pe->dirent.d_name); -- if (pe->content) { -- memcpy(dmesg + dmesg_size, pe->content, pe->content_size); -- dmesg_size += pe->content_size; -- } - -- pe_id = mfree(pe_id); -+ if ((p = startswith(pe->dirent.d_name, "dmesg-efi-"))) { -+ /* For the EFI backend, the 3 least significant digits of record id encodes a -+ * "count" number, the next 2 least significant digits for the dmesg part -+ * (chunk) number, and the remaining digits as the timestamp. See -+ * linux/drivers/firmware/efi/efi-pstore.c in efi_pstore_write(). */ -+ _cleanup_free_ char *subdir1 = NULL, *subdir2 = NULL; -+ size_t plen = strlen(p); -+ -+ if (plen < 6) -+ continue; -+ -+ /* Extract base record id */ -+ subdir1 = strndup(p, plen - 5); -+ if (!subdir1) -+ return log_oom(); -+ /* Extract "count" field */ -+ subdir2 = strndup(p + plen - 3, 3); -+ if (!subdir2) -+ return log_oom(); -+ -+ /* Now move file from pstore to archive storage */ -+ (void) move_file(pe, subdir1, subdir2); -+ -+ /* Append to the dmesg */ -+ (void) append_dmesg(pe, subdir1, subdir2); -+ } else if ((p = startswith(pe->dirent.d_name, "dmesg-erst-"))) { -+ /* For the ERST backend, the record is a monotonically increasing number, seeded as -+ * a timestamp. See linux/drivers/acpi/apei/erst.c in erst_writer(). */ -+ uint64_t record_id; -+ -+ if (safe_atou64(p, &record_id) < 0) -+ continue; -+ if (last_record_id - 1 != record_id) -+ /* A discontinuity in the number has been detected, this current record id -+ * will become the directory name for all pieces of the dmesg in this -+ * series. */ -+ if (free_and_strdup(&erst_subdir, p) < 0) -+ return log_oom(); -+ -+ /* Now move file from pstore to archive storage */ -+ (void) move_file(pe, erst_subdir, NULL); -+ -+ /* Append to the dmesg */ -+ (void) append_dmesg(pe, erst_subdir, NULL); -+ -+ /* Update, but keep erst_subdir for next file */ -+ last_record_id = record_id; -+ } else -+ log_debug("Unknown backend, ignoring \"%s\".", pe->dirent.d_name); - } -- -- if (!dmesg_bad) -- (void) write_dmesg(dmesg, dmesg_size, dmesg_id); -+ return 0; - } - - static int list_files(PStoreList *list, const char *sourcepath) { -@@ -393,11 +355,11 @@ static int run(int argc, char *argv[]) { - typesafe_qsort(list.entries, list.n_entries, compare_pstore_entries); - - /* Process known file types */ -- process_dmesg_files(&list); -+ (void) process_dmesg_files(&list); - - /* Move left over files out of pstore */ - for (size_t n = 0; n < list.n_entries; n++) -- move_file(&list.entries[n], NULL); -+ (void) move_file(&list.entries[n], NULL, NULL); - - return 0; - } --- -2.31.1 - diff --git a/SPECS/systemd.spec b/SPECS/systemd.spec index 314709d..c754e3a 100644 --- a/SPECS/systemd.spec +++ b/SPECS/systemd.spec @@ -21,7 +21,7 @@ Name: systemd Url: https://systemd.io Version: 252 -Release: 14.0.1%{?dist}.1 +Release: 14%{?dist}.1 # For a breakdown of the licensing, see README License: LGPLv2+ and MIT and GPLv2+ Summary: System and Service Manager @@ -324,14 +324,6 @@ Patch0243: 0243-test-add-test-case-that-journal-file-is-created-with.patch Patch0244: 0244-ci-workflow-for-gathering-metadata-for-source-git-au.patch Patch0245: 0245-ci-first-part-of-the-source-git-automation-commit-li.patch -# Oracle Patches -Patch1000: 1000-orabug18467469-Hardcode-dm-ioctl-to-use-0-as-version-minor-part-to-.patch -Patch1001: 1001-Fix-missing-netdev-for-iscsi-entry-in-fstab.patch -Patch1002: 1002-udev-rules-fix-for-memory-hot-add-and-remove.patch -Patch1003: 1003-orabug32870980-disable-unprivileged-BPF-by-default.patch -Patch1006: 1006-orabug34467234-shutdown-get-only-active-md-arrays.patch -Patch1007: 1007-orabug34868110-pstore-fixes-for-dmesg.txt-reconstruction.patch - # Downstream-only patches (9000–9999) %ifarch %{ix86} x86_64 aarch64 @@ -347,7 +339,6 @@ BuildRequires: libfdisk-devel BuildRequires: pam-devel BuildRequires: libselinux-devel BuildRequires: audit-libs-devel -BuildRequires: systemtap-sdt-devel %if %{without bootstrap} BuildRequires: cryptsetup-devel %endif @@ -738,8 +729,8 @@ CONFIGURE_OPTS=( -Duserdb=false -Dportabled=false -Dnetworkd=false + -Dsupport-url=https://access.redhat.com/support -Ddefault-net-naming-scheme=rhel-9.0 - -Dsupport-url=https://support.oracle.com ) %if %{without lto} @@ -760,10 +751,6 @@ fi %install %meson_install -# Set RemoveIPC=no as the default for OL -echo "#This is the default for OL" >> %{buildroot}%{_sysconfdir}/systemd/logind.conf -echo "RemoveIPC=no" >> %{buildroot}%{_sysconfdir}/systemd/logind.conf - # udev links mkdir -p %{buildroot}/%{_sbindir} ln -sf ../bin/udevadm %{buildroot}%{_sbindir}/udevadm @@ -1157,19 +1144,6 @@ getent passwd systemd-oom &>/dev/null || useradd -r -l -g systemd-oom -d / -s /s %files standalone-sysusers -f .file-list-standalone-sysusers %changelog -* Wed Jun 21 2023 Pooja Senthil Kumar - 252-14.0.1.1 -- Backport upstream pstore dmesg fix [Orabug: 34868110] -- Remove upstream references [Orabug: 33995357] -- Disable unprivileged BPF by default [Orabug: 32870980] -- udev rules: fix memory hot add and remove [Orabug: 31310273] -- set "RemoveIPC=no" in logind.conf as default for OL7.2 [Orabug: 22224874] -- allow dm remove ioctl to co-operate with UEK3 (Vaughan Cao) [Orabug: 18467469] -- fix _netdev is missing for iscsi entry in /etc/fstab (tony.l.lam@oracle.com) [Orabug: 25897792] -- shutdown: get only active md arrays. [Orabug: 34467234] -- Removed unneeded patches from the systemd.spec file [Orabug: 34272490] -- A) 1004-orabug34272490-0001-core-device-ignore-DEVICE_FOUND_UDEV-bit-on-switchin.patch -- B) 1005-orabug34272490-0002-core-device-drop-unnecessary-condition.patch - * Wed May 24 2023 systemd maintenance team - 252-14.1 - Bump version to 252-14.1 to make sure that NEVRA is higher than systemd-252-14.el9.rhaos4.13 (#2184929)