Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package grub2 for openSUSE:Factory checked 
in at 2024-01-17 22:15:41
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/grub2 (Old)
 and      /work/SRC/openSUSE:Factory/.grub2.new.16006 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "grub2"

Wed Jan 17 22:15:41 2024 rev:313 rq:1139339 version:2.12

Changes:
--------
--- /work/SRC/openSUSE:Factory/grub2/grub2.changes      2024-01-11 
21:05:02.530272175 +0100
+++ /work/SRC/openSUSE:Factory/.grub2.new.16006/grub2.changes   2024-01-17 
22:15:49.396149824 +0100
@@ -1,0 +2,7 @@
+Wed Jan 17 03:32:48 UTC 2024 - Michael Chang <mch...@suse.com>
+
+- Resolved XFS regression leading to the "not a correct XFS inode" error by
+  temporarily reverting the problematic commit (bsc#1218864)
+  * 0001-Revert-fs-xfs-Fix-XFS-directory-extent-parsing.patch
+
+-------------------------------------------------------------------

New:
----
  0001-Revert-fs-xfs-Fix-XFS-directory-extent-parsing.patch

BETA DEBUG BEGIN:
  New:  temporarily reverting the problematic commit (bsc#1218864)
  * 0001-Revert-fs-xfs-Fix-XFS-directory-extent-parsing.patch
BETA DEBUG END:

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

Other differences:
------------------
++++++ grub2.spec ++++++
--- /var/tmp/diff_new_pack.9rHZje/_old  2024-01-17 22:15:52.576266607 +0100
+++ /var/tmp/diff_new_pack.9rHZje/_new  2024-01-17 22:15:52.580266754 +0100
@@ -387,6 +387,7 @@
 Patch195:       0004-Key-revocation-on-out-of-bound-file-access.patch
 # Workaround for 2.12 tarball
 Patch196:       fix_no_extra_deps_in_release_tarball.patch
+Patch197:       0001-Revert-fs-xfs-Fix-XFS-directory-extent-parsing.patch
 
 Requires:       gettext-runtime
 %if 0%{?suse_version} >= 1140

++++++ 0001-Revert-fs-xfs-Fix-XFS-directory-extent-parsing.patch ++++++
>From 664a8569c5c8c101879b384dbdaa81dc38cf2f68 Mon Sep 17 00:00:00 2001
From: Michael Chang <mch...@suse.com>
Date: Wed, 17 Jan 2024 11:23:35 +0800
Subject: [PATCH] Revert "fs/xfs: Fix XFS directory extent parsing"

This reverts commit 07318ee7e11a00b9c1dea4c6b4edf62af35a511a.
---
 grub-core/fs/xfs.c | 52 +++++++++++++---------------------------------
 1 file changed, 14 insertions(+), 38 deletions(-)

diff --git a/grub-core/fs/xfs.c b/grub-core/fs/xfs.c
index bc2224dbb..9dfe3a2fa 100644
--- a/grub-core/fs/xfs.c
+++ b/grub-core/fs/xfs.c
@@ -228,12 +228,6 @@ struct grub_xfs_inode
 /* Size of struct grub_xfs_inode v2, up to unused4 member included. */
 #define XFS_V2_INODE_SIZE      (XFS_V3_INODE_SIZE - 76)
 
-struct grub_xfs_dir_leaf_entry
-{
-  grub_uint32_t hashval;
-  grub_uint32_t address;
-} GRUB_PACKED;
-
 struct grub_xfs_dirblock_tail
 {
   grub_uint32_t leaf_count;
@@ -900,8 +894,9 @@ grub_xfs_iterate_dir (grub_fshelp_node_t dir,
          {
            struct grub_xfs_dir2_entry *direntry =
                                        grub_xfs_first_de(dir->data, dirblock);
-           int entries = -1;
-           char *end = dirblock + dirblk_size;
+           int entries;
+           struct grub_xfs_dirblock_tail *tail =
+                                       grub_xfs_dir_tail(dir->data, dirblock);
 
            numread = grub_xfs_read_file (dir, 0, 0,
                                          blk << dirblk_log2,
@@ -912,27 +907,14 @@ grub_xfs_iterate_dir (grub_fshelp_node_t dir,
                return 0;
              }
 
-           /*
-            * Leaf and tail information are only in the data block if the 
number
-            * of extents is 1.
-            */
-           if (dir->inode.nextents == grub_cpu_to_be32_compile_time (1))
-             {
-               struct grub_xfs_dirblock_tail *tail = grub_xfs_dir_tail 
(dir->data, dirblock);
-
-               end = (char *) tail;
-
-               /* Subtract the space used by leaf nodes. */
-               end -= grub_be_to_cpu32 (tail->leaf_count) * sizeof (struct 
grub_xfs_dir_leaf_entry);
+           entries = (grub_be_to_cpu32 (tail->leaf_count)
+                      - grub_be_to_cpu32 (tail->leaf_stale));
 
-               entries = grub_be_to_cpu32 (tail->leaf_count) - 
grub_be_to_cpu32 (tail->leaf_stale);
-
-               if (!entries)
-                 continue;
-             }
+           if (!entries)
+             continue;
 
            /* Iterate over all entries within this block.  */
-           while ((char *) direntry < (char *) end)
+           while ((char *)direntry < (char *)tail)
              {
                grub_uint8_t *freetag;
                char *filename;
@@ -952,7 +934,7 @@ grub_xfs_iterate_dir (grub_fshelp_node_t dir,
                  }
 
                filename = (char *)(direntry + 1);
-               if (filename + direntry->len + 1 > (char *) end)
+               if (filename + direntry->len - 1 > (char *) tail)
                  return grub_error (GRUB_ERR_BAD_FS, "invalid XFS directory 
entry");
 
                /* The byte after the filename is for the filetype, padding, or
@@ -966,17 +948,11 @@ grub_xfs_iterate_dir (grub_fshelp_node_t dir,
                    return 1;
                  }
 
-               /*
-                * The expected number of directory entries is only tracked for 
the
-                * single extent case.
-                */
-               if (dir->inode.nextents == grub_cpu_to_be32_compile_time (1))
-                 {
-                   /* Check if last direntry in this block is reached. */
-                   entries--;
-                   if (!entries)
-                     break;
-                 }
+               /* Check if last direntry in this block is
+                  reached.  */
+               entries--;
+               if (!entries)
+                 break;
 
                /* Select the next directory entry.  */
                direntry = grub_xfs_next_de(dir->data, direntry);
-- 
2.43.0

Reply via email to