Skip to content

Commit a5da316

Browse files
Darrick J. Wongtytso
authored andcommitted
fuse2fs: fix block parameter truncation on 32-bit
Use the blk64_t variants of the io channel read/write methods when we have to do partial block zeroing for hole punching because otherwise we corrupt large 64-bit filesystems on 32-bit fuse2fs due to integer truncation. Cc: linux-ext4@vger.kernel.org # v1.43 Fixes: 81cbf1e ("misc: add fuse2fs, a FUSE server for e2fsprogs") Signed-off-by: Darrick J. Wong <djwong@kernel.org> Link: https://lore.kernel.org/r/20250730172324.GR2672022@frogsfrogsfrogs Signed-off-by: Theodore Ts'o <tytso@mit.edu>
1 parent 86a24ae commit a5da316

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

misc/fuse2fs.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4168,13 +4168,13 @@ static errcode_t clean_block_middle(struct fuse2fs *ff, ext2_ino_t ino,
41684168
if (!blk || (retflags & BMAP_RET_UNINIT))
41694169
return 0;
41704170

4171-
err = io_channel_read_blk(fs->io, blk, 1, *buf);
4171+
err = io_channel_read_blk64(fs->io, blk, 1, *buf);
41724172
if (err)
41734173
return err;
41744174

41754175
memset(*buf + residue, 0, len);
41764176

4177-
return io_channel_write_blk(fs->io, blk, 1, *buf);
4177+
return io_channel_write_blk64(fs->io, blk, 1, *buf);
41784178
}
41794179

41804180
static errcode_t clean_block_edge(struct fuse2fs *ff, ext2_ino_t ino,
@@ -4202,7 +4202,7 @@ static errcode_t clean_block_edge(struct fuse2fs *ff, ext2_ino_t ino,
42024202
if (err)
42034203
return err;
42044204

4205-
err = io_channel_read_blk(fs->io, blk, 1, *buf);
4205+
err = io_channel_read_blk64(fs->io, blk, 1, *buf);
42064206
if (err)
42074207
return err;
42084208
if (!blk || (retflags & BMAP_RET_UNINIT))
@@ -4213,7 +4213,7 @@ static errcode_t clean_block_edge(struct fuse2fs *ff, ext2_ino_t ino,
42134213
else
42144214
memset(*buf + residue, 0, fs->blocksize - residue);
42154215

4216-
return io_channel_write_blk(fs->io, blk, 1, *buf);
4216+
return io_channel_write_blk64(fs->io, blk, 1, *buf);
42174217
}
42184218

42194219
static int punch_helper(struct fuse_file_info *fp, int mode, off_t offset,

0 commit comments

Comments
 (0)