From: Darrick J. Wong Date: Thu, 31 Jul 2025 14:38:21 +0000 (-0400) Subject: fuse2fs: fix incorrect EOFS input handling in FITRIM X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=62b2a1619d858f65acaa6ce64623fb8684a88882;p=thirdparty%2Fe2fsprogs.git fuse2fs: fix incorrect EOFS input handling in FITRIM FITRIM isn't well documented, which means that I missed that len == -1ULL always means "trim to end of filesystem". generic/260 has been failing with: --- a/tests/generic/260.out 2025-04-30 16:20:44.532797310 -0700 +++ b/tests/generic/260.out.bad 2025-07-03 11:44:26.946394170 -0700 @@ -11,4 +11,5 @@ [+] Default length with start set (should succeed) [+] Length beyond the end of fs (should succeed) [+] Length beyond the end of fs with start set (should succeed) +After the full fs discard 0 bytes were discarded however the file system is 10401542144 bytes long. Test done because the addition used to compute end suffered an integer overflow, resulting in end < start, which meant nothing happened. Fix this by explicitly checking for -1ULL. Cc: linux-ext4@vger.kernel.org # v1.43 Fixes: 81cbf1ef4f5dab ("misc: add fuse2fs, a FUSE server for e2fsprogs") Signed-off-by: Darrick J. Wong --- diff --git a/misc/fuse2fs.c b/misc/fuse2fs.c index 5b866aed..34eaad15 100644 --- a/misc/fuse2fs.c +++ b/misc/fuse2fs.c @@ -3775,7 +3775,10 @@ static int ioctl_fitrim(struct fuse2fs *ff, struct fuse2fs_file_handle *fh, return -EROFS; start = FUSE2FS_B_TO_FSBT(ff, fr->start); - end = FUSE2FS_B_TO_FSBT(ff, fr->start + fr->len - 1); + if (fr->len == -1ULL) + end = -1ULL; + else + end = FUSE2FS_B_TO_FSBT(ff, fr->start + fr->len - 1); minlen = FUSE2FS_B_TO_FSBT(ff, fr->minlen); if (EXT2FS_NUM_B2C(fs, minlen) > EXT2_CLUSTERS_PER_GROUP(fs->super) ||