]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
xfs: accept filesystem with meta_uuid
authorAndrei Borzenkov <arvidjaar@gmail.com>
Tue, 26 Jul 2016 17:29:26 +0000 (20:29 +0300)
committerAndrei Borzenkov <arvidjaar@gmail.com>
Tue, 26 Jul 2016 17:29:26 +0000 (20:29 +0300)
XFS V5 stores UUID in metadata and compares them with superblock UUID.
To allow changing of user-visible UUID it stores original value in new
superblock field (meta_uuid) and sets incompatible flag to indicate that
new field must be used to verify metadata. Our driver currently does not
check metadata UUID so simply accept such filesystem.

Reported-By: Marcos Mello <marcosfrm@outlook.com>
Reviewd by Jan Kara <jack@suse.cz>

grub-core/fs/xfs.c

index ca9c0c37aae71a7934aaab65b17f4a53725059bc..9f66dd6e4c6491e6b2cbfc7866335b432c824502 100644 (file)
@@ -76,8 +76,13 @@ GRUB_MOD_LICENSE ("GPLv3+");
 
 /* incompat feature flags */
 #define XFS_SB_FEAT_INCOMPAT_FTYPE      (1 << 0)        /* filetype in dirent */
+#define XFS_SB_FEAT_INCOMPAT_SPINODES   (1 << 1)        /* sparse inode chunks */
+#define XFS_SB_FEAT_INCOMPAT_META_UUID  (1 << 2)        /* metadata UUID */
+
+/* We do not currently verify metadata UUID so it is safe to read such filesystem */
 #define XFS_SB_FEAT_INCOMPAT_SUPPORTED \
-       (XFS_SB_FEAT_INCOMPAT_FTYPE)
+       (XFS_SB_FEAT_INCOMPAT_FTYPE | \
+        XFS_SB_FEAT_INCOMPAT_META_UUID)
 
 struct grub_xfs_sblock
 {