Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package grub2 for openSUSE:Factory checked 
in at 2026-03-17 19:03:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/grub2 (Old)
 and      /work/SRC/openSUSE:Factory/.grub2.new.8177 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "grub2"

Tue Mar 17 19:03:06 2026 rev:386 rq:1339498 version:2.14

Changes:
--------
--- /work/SRC/openSUSE:Factory/grub2/grub2.changes      2026-03-14 
22:20:38.736784474 +0100
+++ /work/SRC/openSUSE:Factory/.grub2.new.8177/grub2.changes    2026-03-17 
19:04:46.389357010 +0100
@@ -1,0 +2,6 @@
+Tue Mar 17 06:40:47 UTC 2026 - Michael Chang <[email protected]>
+
+- Fix RAID scenarios stopped being able to boot in Power (bsc#1259631)
+  * 0001-mdraid1x-fix-raid_disks-decoding-on-big-endian-syste.patch
+
+-------------------------------------------------------------------

New:
----
  0001-mdraid1x-fix-raid_disks-decoding-on-big-endian-syste.patch

----------(New B)----------
  New:- Fix RAID scenarios stopped being able to boot in Power (bsc#1259631)
  * 0001-mdraid1x-fix-raid_disks-decoding-on-big-endian-syste.patch
----------(New E)----------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ grub2.spec ++++++
--- /var/tmp/diff_new_pack.Haa5gH/_old  2026-03-17 19:04:49.761496757 +0100
+++ /var/tmp/diff_new_pack.Haa5gH/_new  2026-03-17 19:04:49.765496924 +0100
@@ -399,6 +399,7 @@
 Patch410:       0002-grubbls-Add-automatic-fwsetup-menu-entry.patch
 Patch411:       0001-ieee1275-support-dm-multipath-bootlist.patch
 Patch412:       grub2-bls-loader-config-timeout-fix.patch
+Patch413:       0001-mdraid1x-fix-raid_disks-decoding-on-big-endian-syste.patch
 
 %if 0%{?suse_version} < 1600
 Requires:       gettext-runtime

++++++ 0001-mdraid1x-fix-raid_disks-decoding-on-big-endian-syste.patch ++++++
>From 8d188f597796e8559ddc4bf7c9725fede770d486 Mon Sep 17 00:00:00 2001
From: Michael Chang <[email protected]>
Date: Tue, 17 Mar 2026 10:03:46 +0800
Subject: [PATCH] mdraid1x: fix raid_disks decoding on big-endian systems

Commit 99b4c0c38 added mdraid 1.x superblock validation to prevent
infinite recursion, but it converts the 32-bit sb.raid_disks field with
grub_le_to_cpu64().

On big-endian systems this misdecodes valid metadata, so
grub_mdraid_detect() rejects mdraid 1.x arrays and never registers the
mduuid/... device. Affected systems then fail to boot with "disk
`mduuid/<UUID>' not found".

Read sb.raid_disks with grub_le_to_cpu32() and reuse the converted value
for validation and superblock size calculation. This restores mdraid 1.x
detection on big-endian systems and allows them to boot again.

Fixes: 99b4c0c38 ("mdraid1x: add superblock validation to prevent
infinite recursion")

Signed-off-by: Michael Chang <[email protected]>
---
 grub-core/disk/mdraid1x_linux.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/grub-core/disk/mdraid1x_linux.c b/grub-core/disk/mdraid1x_linux.c
index e8ff0b534..a239a568c 100644
--- a/grub-core/disk/mdraid1x_linux.c
+++ b/grub-core/disk/mdraid1x_linux.c
@@ -134,6 +134,7 @@ grub_mdraid_detect (grub_disk_t disk,
       struct grub_diskfilter_vg *array;
       char *uuid;
       grub_uint64_t sb_sz, data_end, sb_end;
+      grub_uint32_t raid_disks;
 
       if (size == GRUB_DISK_SIZE_UNKNOWN && minor_version == 0)
        continue;
@@ -159,12 +160,14 @@ grub_mdraid_detect (grub_disk_t disk,
          || grub_le_to_cpu64 (sb.super_offset) != sector)
        continue;
 
+      raid_disks = grub_le_to_cpu32 (sb.raid_disks);
+
       /*
        * The first check follows the Linux kernel's data_size
        * validation from v6.8-rc5.
        */
       if (grub_le_to_cpu64 (sb.data_size) < 10 ||
-         grub_le_to_cpu64 (sb.raid_disks) > GRUB_MDRAID_MAX_DISKS)
+         raid_disks > GRUB_MDRAID_MAX_DISKS)
        {
          grub_dprintf ("mdraid1x", "Corrupted superblock\n");
          return NULL;
@@ -174,7 +177,7 @@ grub_mdraid_detect (grub_disk_t disk,
        * Total size of superblock: 256 bytes plus 2 bytes per device
        * in the array.
        */
-      sb_sz = sizeof (struct grub_raid_super_1x) + grub_le_to_cpu64 
(sb.raid_disks) * 2;
+      sb_sz = sizeof (struct grub_raid_super_1x) + raid_disks * 2;
 
       if (grub_add (grub_le_to_cpu64 (sb.super_offset),
                    (ALIGN_UP(sb_sz, GRUB_MD_SECTOR_SIZE) >> 
GRUB_MD_SECTOR_SHIFT), &sb_end))
-- 
2.53.0

Reply via email to