Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package grub2 for openSUSE:Factory checked in at 2025-03-05 13:38:23 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/grub2 (Old) and /work/SRC/openSUSE:Factory/.grub2.new.19136 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "grub2" Wed Mar 5 13:38:23 2025 rev:349 rq:1249587 version:2.12 Changes: -------- --- /work/SRC/openSUSE:Factory/grub2/grub2.changes 2025-02-25 16:41:53.824645753 +0100 +++ /work/SRC/openSUSE:Factory/.grub2.new.19136/grub2.changes 2025-03-05 13:38:31.471526971 +0100 @@ -1,0 +2,9 @@ +Mon Mar 3 04:30:51 UTC 2025 - Michael Chang <mch...@suse.com> + +- Cherry-pick upstream XFS fixes + * 0001-fs-xfs-Add-new-superblock-features-added-in-Linux-6..patch + * 0002-fs-xfs-Fix-grub_xfs_iterate_dir-return-value-in-case.patch +- Fix "attempt to read of write outside of partition" error message (bsc#1237844) + * 0003-fs-xfs-fix-large-extent-counters-incompat-feature-su.patch + +------------------------------------------------------------------- New: ---- 0001-fs-xfs-Add-new-superblock-features-added-in-Linux-6..patch 0002-fs-xfs-Fix-grub_xfs_iterate_dir-return-value-in-case.patch 0003-fs-xfs-fix-large-extent-counters-incompat-feature-su.patch BETA DEBUG BEGIN: New:- Cherry-pick upstream XFS fixes * 0001-fs-xfs-Add-new-superblock-features-added-in-Linux-6..patch * 0002-fs-xfs-Fix-grub_xfs_iterate_dir-return-value-in-case.patch New: * 0001-fs-xfs-Add-new-superblock-features-added-in-Linux-6..patch * 0002-fs-xfs-Fix-grub_xfs_iterate_dir-return-value-in-case.patch - Fix "attempt to read of write outside of partition" error message (bsc#1237844) New:- Fix "attempt to read of write outside of partition" error message (bsc#1237844) * 0003-fs-xfs-fix-large-extent-counters-incompat-feature-su.patch BETA DEBUG END: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ grub2.spec ++++++ --- /var/tmp/diff_new_pack.8rKnwC/_old 2025-03-05 13:38:35.147681184 +0100 +++ /var/tmp/diff_new_pack.8rKnwC/_new 2025-03-05 13:38:35.151681351 +0100 @@ -438,6 +438,9 @@ Patch257: 0019-fs-Disable-many-filesystems-under-lockdown.patch Patch258: 0020-fs-Prevent-overflows-when-allocating-memory-for-arra.patch Patch259: 0001-bls-Accept-.conf-suffix-in-setting-default-entry.patch +Patch260: 0001-fs-xfs-Add-new-superblock-features-added-in-Linux-6..patch +Patch261: 0002-fs-xfs-Fix-grub_xfs_iterate_dir-return-value-in-case.patch +Patch262: 0003-fs-xfs-fix-large-extent-counters-incompat-feature-su.patch %if 0%{?suse_version} < 1600 Requires: gettext-runtime ++++++ 0001-fs-xfs-Add-new-superblock-features-added-in-Linux-6..patch ++++++ >From 7a8d9a29358fbe9eb5dcc70e63c417c4f3cd5068 Mon Sep 17 00:00:00 2001 From: "Darrick J. Wong" <djw...@kernel.org> Date: Mon, 3 Feb 2025 15:41:22 -0800 Subject: [PATCH 1/3] fs/xfs: Add new superblock features added in Linux 6.12/6.13 The Linux port of XFS added a few new features in 2024. The existing GRUB driver doesn't attempt to read or write any of the new metadata, so, all three can be added to the incompat allowlist. On the occasion align XFS_SB_FEAT_INCOMPAT_NREXT64 value. Signed-off-by: Darrick J. Wong <djw...@kernel.org> Reviewed-by: Daniel Kiper <daniel.ki...@oracle.com> --- grub-core/fs/xfs.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/grub-core/fs/xfs.c b/grub-core/fs/xfs.c index c17e54e447..e3a69fe498 100644 --- a/grub-core/fs/xfs.c +++ b/grub-core/fs/xfs.c @@ -88,7 +88,10 @@ GRUB_MOD_LICENSE ("GPLv3+"); #define XFS_SB_FEAT_INCOMPAT_META_UUID (1 << 2) /* metadata UUID */ #define XFS_SB_FEAT_INCOMPAT_BIGTIME (1 << 3) /* large timestamps */ #define XFS_SB_FEAT_INCOMPAT_NEEDSREPAIR (1 << 4) /* needs xfs_repair */ -#define XFS_SB_FEAT_INCOMPAT_NREXT64 (1 << 5) /* large extent counters */ +#define XFS_SB_FEAT_INCOMPAT_NREXT64 (1 << 5) /* large extent counters */ +#define XFS_SB_FEAT_INCOMPAT_EXCHRANGE (1 << 6) /* exchangerange supported */ +#define XFS_SB_FEAT_INCOMPAT_PARENT (1 << 7) /* parent pointers */ +#define XFS_SB_FEAT_INCOMPAT_METADIR (1 << 8) /* metadata dir tree */ /* * Directory entries with ftype are explicitly handled by GRUB code. @@ -98,6 +101,15 @@ GRUB_MOD_LICENSE ("GPLv3+"); * * We do not currently verify metadata UUID, so it is safe to read filesystems * with the XFS_SB_FEAT_INCOMPAT_META_UUID feature. + * + * We do not currently replay the log, so it is safe to read filesystems + * with the XFS_SB_FEAT_INCOMPAT_EXCHRANGE feature. + * + * We do not currently read directory parent pointers, so it is safe to read + * filesystems with the XFS_SB_FEAT_INCOMPAT_PARENT feature. + * + * We do not currently look at realtime or quota metadata, so it is safe to + * read filesystems with the XFS_SB_FEAT_INCOMPAT_METADIR feature. */ #define XFS_SB_FEAT_INCOMPAT_SUPPORTED \ (XFS_SB_FEAT_INCOMPAT_FTYPE | \ @@ -105,7 +117,10 @@ GRUB_MOD_LICENSE ("GPLv3+"); XFS_SB_FEAT_INCOMPAT_META_UUID | \ XFS_SB_FEAT_INCOMPAT_BIGTIME | \ XFS_SB_FEAT_INCOMPAT_NEEDSREPAIR | \ - XFS_SB_FEAT_INCOMPAT_NREXT64) + XFS_SB_FEAT_INCOMPAT_NREXT64 | \ + XFS_SB_FEAT_INCOMPAT_EXCHRANGE | \ + XFS_SB_FEAT_INCOMPAT_PARENT | \ + XFS_SB_FEAT_INCOMPAT_METADIR) struct grub_xfs_sblock { -- 2.48.1 ++++++ 0002-fs-xfs-Fix-grub_xfs_iterate_dir-return-value-in-case.patch ++++++ >From 3a69e9126d532214d940c1386f2933a124611a6c Mon Sep 17 00:00:00 2001 From: Egor Ignatov <eg...@altlinux.org> Date: Thu, 23 Jan 2025 20:44:14 +0300 Subject: [PATCH 2/3] fs/xfs: Fix grub_xfs_iterate_dir() return value in case of failure Commit ef7850c757 (fs/xfs: Fix issues found while fuzzing the XFS filesystem) introduced multiple boundary checks in grub_xfs_iterate_dir() but handled the error incorrectly returning error code instead of 0. Fix it. Also change the error message so that it doesn't match the message in grub_xfs_read_inode(). Fixes: ef7850c757 (fs/xfs: Fix issues found while fuzzing the XFS filesystem) Signed-off-by: Egor Ignatov <eg...@altlinux.org> Reviewed-by: Daniel Kiper <daniel.ki...@oracle.com> --- grub-core/fs/xfs.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/grub-core/fs/xfs.c b/grub-core/fs/xfs.c index e3a69fe498..30e3e7f6d9 100644 --- a/grub-core/fs/xfs.c +++ b/grub-core/fs/xfs.c @@ -859,7 +859,11 @@ grub_xfs_iterate_dir (grub_fshelp_node_t dir, grub_uint8_t c; if ((inopos + (smallino ? 4 : 8)) > (grub_uint8_t *) dir + grub_xfs_fshelp_size (dir->data)) - return grub_error (GRUB_ERR_BAD_FS, "not a correct XFS inode"); + { + grub_error (GRUB_ERR_BAD_FS, "invalid XFS inode"); + return 0; + } + /* inopos might be unaligned. */ if (smallino) @@ -968,7 +972,10 @@ grub_xfs_iterate_dir (grub_fshelp_node_t dir, filename = (char *)(direntry + 1); if (filename + direntry->len + 1 > (char *) end) - return grub_error (GRUB_ERR_BAD_FS, "invalid XFS directory entry"); + { + grub_error (GRUB_ERR_BAD_FS, "invalid XFS directory entry"); + return 0; + } /* The byte after the filename is for the filetype, padding, or tag, which is not used by GRUB. So it can be overwritten. */ -- 2.48.1 ++++++ 0003-fs-xfs-fix-large-extent-counters-incompat-feature-su.patch ++++++ >From 846b1d8bebd316a18fae9fb90efb3e8451ec70cc Mon Sep 17 00:00:00 2001 From: Eric Sandeen <sand...@redhat.com> Date: Wed, 4 Dec 2024 07:50:28 -0600 Subject: [PATCH 3/3] fs/xfs: fix large extent counters incompat feature support When large extent counter / NREXT64 support was added to grub, it missed a couple of direct reads of nextents which need to be changed to the new NREXT64-aware helper as well. Without this, we'll have mis-reads of some directories with this feature enabled. (The large extent counter fix likely raced on merge with 07318ee7e ("fs/xfs: Fix XFS directory extent parsing") which added the new direct nextents reads just prior, causing this issue.) Fixes: aa7c1322671e ("fs/xfs: Add large extent counters incompat feature support") Signed-off-by: Eric Sandeen <sand...@redhat.com> Reviewed-by: Anthony Iliopoulos <ail...@suse.com> Reviewed-by: Jon DeVree <n...@vault24.org> Link: https://lore.kernel.org/r/985816b8-35e6-4083-994f-ec9138bd3...@redhat.com --- grub-core/fs/xfs.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/grub-core/fs/xfs.c b/grub-core/fs/xfs.c index 30e3e7f6d9..3ba232436e 100644 --- a/grub-core/fs/xfs.c +++ b/grub-core/fs/xfs.c @@ -937,7 +937,7 @@ grub_xfs_iterate_dir (grub_fshelp_node_t dir, * 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)) + if (grub_xfs_get_inode_nextents(&dir->inode) == 1) { end = (char *) tail; @@ -992,7 +992,7 @@ grub_xfs_iterate_dir (grub_fshelp_node_t dir, * 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)) + if (grub_xfs_get_inode_nextents(&dir->inode) == 1) { /* Check if last direntry in this block is reached. */ entries--; -- 2.48.1