From: Robert Yang Date: Mon, 1 Dec 2025 02:33:49 +0000 (-0800) Subject: e2fsprogs: misc/create_inode.c: Fix for file larger than 2GB X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=683a1e773899f3042458604b3f136861318c1028;p=thirdparty%2Fopenembedded%2Fopenembedded-core-contrib.git e2fsprogs: misc/create_inode.c: Fix for file larger than 2GB Fixed: $ dd if=/dev/zero of=../image.ext4 bs=1M count=4k $ dd if=/dev/random of=../rootfs/largefile bs=1M count=3k $ ./misc/mke2fs -t ext4 -d ../rootfs/ ../image.ext4 __populate_fs: Ext2 file too big while writing file "largefile" mke2fs: Ext2 file too big while populating file system This was because the offset is overflow, use __u64 to fix the problem. Another code which uses ext2_off_t is copy_fs_verity_data(), but it only copies the metadata, so it should be enough large for it, just leave it there. Signed-off-by: Robert Yang Signed-off-by: Mathieu Dubois-Briand Signed-off-by: Richard Purdie --- diff --git a/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-misc-create_inode.c-Fix-for-file-larger-than-2GB.patch b/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-misc-create_inode.c-Fix-for-file-larger-than-2GB.patch new file mode 100644 index 00000000000..1c578022fb7 --- /dev/null +++ b/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-misc-create_inode.c-Fix-for-file-larger-than-2GB.patch @@ -0,0 +1,40 @@ +From 6359e0ec8ef249d202dbb8583a6e430f20c5b1a0 Mon Sep 17 00:00:00 2001 +From: Robert Yang +Date: Sun, 30 Nov 2025 21:47:50 +0800 +Subject: [PATCH] misc/create_inode.c: Fix for file larger than 2GB + +Fixed: +$ dd if=/dev/zero of=../image.ext4 bs=1M count=4k +$ dd if=/dev/random of=../rootfs/largefile bs=1M count=3k +$ ./misc/mke2fs -t ext4 -d ../rootfs/ ../image.ext4 +__populate_fs: Ext2 file too big while writing file "largefile" +mke2fs: Ext2 file too big while populating file system + +This was because the offset is overflow, use __u64 to fix the problem. + +Another code which uses ext2_off_t is copy_fs_verity_data(), but it only copies +the metadata, so it should be enough large for it, just leave it there. + +Upstream-Status: Submitted [https://github.com/tytso/e2fsprogs/pull/258] + +Signed-off-by: Robert Yang +--- + misc/create_inode.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/misc/create_inode.c b/misc/create_inode.c +index 624efc03..14273534 100644 +--- a/misc/create_inode.c ++++ b/misc/create_inode.c +@@ -414,7 +414,7 @@ static ssize_t my_pread(int fd, void *buf, size_t count, off_t offset) + } + #endif /* !defined HAVE_PREAD64 && !defined HAVE_PREAD */ + +-static errcode_t write_all(ext2_file_t e2_file, ext2_off_t off, const char *buf, unsigned int n_bytes) { ++static errcode_t write_all(ext2_file_t e2_file, __u64 off, const char *buf, unsigned int n_bytes) { + errcode_t err = ext2fs_file_llseek(e2_file, off, EXT2_SEEK_SET, NULL); + if (err) + return err; +-- +2.34.1 + diff --git a/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.47.3.bb b/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.47.3.bb index 9b5c4dfde54..40658399d9c 100644 --- a/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.47.3.bb +++ b/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.47.3.bb @@ -4,6 +4,7 @@ SRC_URI += "file://remove.ldconfig.call.patch \ file://run-ptest \ file://ptest.patch \ file://mkdir_p.patch \ + file://0001-misc-create_inode.c-Fix-for-file-larger-than-2GB.patch \ " SRC_URI:append:class-native = " \ file://e2fsprogs-fix-missing-check-for-permission-denied.patch \