From: Jingbo Xu <jefflexu@linux.alibaba.com>
To: hsiangkao@linux.alibaba.com, chao@kernel.org, huyue2@coolpad.com,
linux-erofs@lists.ozlabs.org
Cc: linux-kernel@vger.kernel.org
Subject: [PATCH v2] erofs: deprecate superblock checksum feature
Date: Mon, 17 Jul 2023 19:27:03 +0800 [thread overview]
Message-ID: <20230717112703.60130-1-jefflexu@linux.alibaba.com> (raw)
Later we're going to try the self-contained image verification.
The current superblock checksum feature has quite limited
functionality, instead, merkle trees can provide better protection
for image integrity.
xxhash is also used in the following xattr name filter feature. It is
redundant for one filesystem to rely on two hashing algorithms at the
same time.
Since the superblock checksum is a compatible feature, just deprecate
it now.
Signed-off-by: Jingbo Xu <jefflexu@linux.alibaba.com>
---
changes since v1:
- improve commit message (Gao Xiang)
v1: https://lore.kernel.org/all/20230714033832.111740-1-jefflexu@linux.alibaba.com/
---
fs/erofs/Kconfig | 1 -
fs/erofs/super.c | 44 +++++---------------------------------------
2 files changed, 5 insertions(+), 40 deletions(-)
diff --git a/fs/erofs/Kconfig b/fs/erofs/Kconfig
index f259d92c9720..ebcb1f6a426a 100644
--- a/fs/erofs/Kconfig
+++ b/fs/erofs/Kconfig
@@ -4,7 +4,6 @@ config EROFS_FS
tristate "EROFS filesystem support"
depends on BLOCK
select FS_IOMAP
- select LIBCRC32C
help
EROFS (Enhanced Read-Only File System) is a lightweight read-only
file system with modern designs (e.g. no buffer heads, inline
diff --git a/fs/erofs/super.c b/fs/erofs/super.c
index 9d6a3c6158bd..bb6a966ac4d4 100644
--- a/fs/erofs/super.c
+++ b/fs/erofs/super.c
@@ -8,7 +8,6 @@
#include <linux/statfs.h>
#include <linux/parser.h>
#include <linux/seq_file.h>
-#include <linux/crc32c.h>
#include <linux/fs_context.h>
#include <linux/fs_parser.h>
#include <linux/dax.h>
@@ -51,33 +50,6 @@ void _erofs_info(struct super_block *sb, const char *function,
va_end(args);
}
-static int erofs_superblock_csum_verify(struct super_block *sb, void *sbdata)
-{
- size_t len = 1 << EROFS_SB(sb)->blkszbits;
- struct erofs_super_block *dsb;
- u32 expected_crc, crc;
-
- if (len > EROFS_SUPER_OFFSET)
- len -= EROFS_SUPER_OFFSET;
-
- dsb = kmemdup(sbdata + EROFS_SUPER_OFFSET, len, GFP_KERNEL);
- if (!dsb)
- return -ENOMEM;
-
- expected_crc = le32_to_cpu(dsb->checksum);
- dsb->checksum = 0;
- /* to allow for x86 boot sectors and other oddities. */
- crc = crc32c(~0, dsb, len);
- kfree(dsb);
-
- if (crc != expected_crc) {
- erofs_err(sb, "invalid checksum 0x%08x, 0x%08x expected",
- crc, expected_crc);
- return -EBADMSG;
- }
- return 0;
-}
-
static void erofs_inode_init_once(void *ptr)
{
struct erofs_inode *vi = ptr;
@@ -113,15 +85,16 @@ static void erofs_free_inode(struct inode *inode)
static bool check_layout_compatibility(struct super_block *sb,
struct erofs_super_block *dsb)
{
- const unsigned int feature = le32_to_cpu(dsb->feature_incompat);
+ struct erofs_sb_info *sbi = EROFS_SB(sb);
- EROFS_SB(sb)->feature_incompat = feature;
+ sbi->feature_compat = le32_to_cpu(dsb->feature_compat);
+ sbi->feature_incompat = le32_to_cpu(dsb->feature_incompat);
/* check if current kernel meets all mandatory requirements */
- if (feature & (~EROFS_ALL_FEATURE_INCOMPAT)) {
+ if (sbi->feature_incompat & (~EROFS_ALL_FEATURE_INCOMPAT)) {
erofs_err(sb,
"unidentified incompatible feature %x, please upgrade kernel version",
- feature & ~EROFS_ALL_FEATURE_INCOMPAT);
+ sbi->feature_incompat & ~EROFS_ALL_FEATURE_INCOMPAT);
return false;
}
return true;
@@ -365,13 +338,6 @@ static int erofs_read_superblock(struct super_block *sb)
goto out;
}
- sbi->feature_compat = le32_to_cpu(dsb->feature_compat);
- if (erofs_sb_has_sb_chksum(sbi)) {
- ret = erofs_superblock_csum_verify(sb, data);
- if (ret)
- goto out;
- }
-
ret = -EINVAL;
if (!check_layout_compatibility(sb, dsb))
goto out;
--
2.19.1.6.gb485710b
next reply other threads:[~2023-07-17 11:27 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-17 11:27 Jingbo Xu [this message]
2023-07-17 16:16 ` Gao Xiang
2023-07-30 13:04 ` Chao Yu
2023-07-30 13:31 ` Thomas Weißschuh
2023-07-30 14:01 ` Gao Xiang
2023-07-30 14:28 ` Thomas Weißschuh
2023-07-30 14:37 ` Gao Xiang
2023-07-30 14:49 ` Thomas Weißschuh
2023-07-30 14:56 ` Gao Xiang
2023-08-01 2:47 ` Jingbo Xu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230717112703.60130-1-jefflexu@linux.alibaba.com \
--to=jefflexu@linux.alibaba.com \
--cc=chao@kernel.org \
--cc=hsiangkao@linux.alibaba.com \
--cc=huyue2@coolpad.com \
--cc=linux-erofs@lists.ozlabs.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®