[PATCH] erofs-utils: fix `-Ededupe` crash without fragments enabled

Gao Xiang hsiangkao at linux.alibaba.com
Sat May 6 12:51:17 AEST 2023


Otherwise, an unexpected segfault will happen since
  EROFS_FEATURE_INCOMPAT_FRAGMENTS and
  EROFS_FEATURE_INCOMPAT_DEDUPE    share the same bit.

Fixes: 18fbf7d12e4f ("erofs-utils: build xattrs upon extra long name prefixes")
Signed-off-by: Gao Xiang <hsiangkao at linux.alibaba.com>
---
 lib/xattr.c | 1 +
 mkfs/main.c | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/lib/xattr.c b/lib/xattr.c
index 5e9e413..9c87227 100644
--- a/lib/xattr.c
+++ b/lib/xattr.c
@@ -646,6 +646,7 @@ int erofs_xattr_write_name_prefixes(FILE *f)
 		if (fseek(f, offset, SEEK_SET))
 			return -errno;
 	}
+	cfg.c_fragments = true;
 	erofs_sb_set_fragments();
 	erofs_sb_set_xattr_prefixes();
 	return 0;
diff --git a/mkfs/main.c b/mkfs/main.c
index 467ea86..ddedfde 100644
--- a/mkfs/main.c
+++ b/mkfs/main.c
@@ -903,7 +903,7 @@ int main(int argc, char **argv)
 	}
 
 	packed_nid = 0;
-	if (erofs_sb_has_fragments()) {
+	if (cfg.c_fragments && erofs_sb_has_fragments()) {
 		erofs_update_progressinfo("Handling packed_file ...");
 		packed_inode = erofs_mkfs_build_packedfile();
 		if (IS_ERR(packed_inode)) {
-- 
2.24.4



More information about the Linux-erofs mailing list