lkml.org 
[lkml]   [2019]   [Apr]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH] f2fs: fix to do sanity with enabled features in image
Date
This patch fixes to do sanity with enabled features in image, if
there are features kernel can not recognize, just fail the mount.

Signed-off-by: Chao Yu <yuchao0@huawei.com>
---
fs/f2fs/f2fs.h | 13 +++++++++++++
fs/f2fs/super.c | 9 +++++++++
2 files changed, 22 insertions(+)

diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
index f5ffc09705eb..15b640967e12 100644
--- a/fs/f2fs/f2fs.h
+++ b/fs/f2fs/f2fs.h
@@ -151,6 +151,19 @@ struct f2fs_mount_info {
#define F2FS_FEATURE_VERITY 0x0400 /* reserved */
#define F2FS_FEATURE_SB_CHKSUM 0x0800

+#define F2FS_ALL_FEATURES (F2FS_FEATURE_ENCRYPT | \
+ F2FS_FEATURE_BLKZONED | \
+ F2FS_FEATURE_ATOMIC_WRITE | \
+ F2FS_FEATURE_EXTRA_ATTR | \
+ F2FS_FEATURE_PRJQUOTA | \
+ F2FS_FEATURE_INODE_CHKSUM | \
+ F2FS_FEATURE_FLEXIBLE_INLINE_XATTR | \
+ F2FS_FEATURE_QUOTA_INO | \
+ F2FS_FEATURE_INODE_CRTIME | \
+ F2FS_FEATURE_LOST_FOUND | \
+ F2FS_FEATURE_VERITY | \
+ F2FS_FEATURE_SB_CHKSUM)
+
#define __F2FS_HAS_FEATURE(raw_super, mask) \
((raw_super->feature & cpu_to_le32(mask)) != 0)
#define F2FS_HAS_FEATURE(sbi, mask) __F2FS_HAS_FEATURE(sbi->raw_super, mask)
diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
index 4f8e9ab48b26..57f2fc6d14ba 100644
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -2573,6 +2573,15 @@ static int sanity_check_raw_super(struct f2fs_sb_info *sbi,
return 1;
}

+ /* check whether kernel supports all features */
+ if (le32_to_cpu(raw_super->feature) & (~F2FS_ALL_FEATURES)) {
+ f2fs_msg(sb, KERN_INFO,
+ "Unsupported feature:%u: supported:%u",
+ le32_to_cpu(raw_super->feature),
+ F2FS_ALL_FEATURES);
+ return 1;
+ }
+
/* check CP/SIT/NAT/SSA/MAIN_AREA area boundary */
if (sanity_check_area_boundary(sbi, bh))
return 1;
--
2.18.0.rc1
\
 
 \ /
  Last update: 2019-04-24 11:49    [W:0.063 / U:7.416 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site