fuse: Pass correct lend value to filemap_write_and_wait_range()
authorXie Yongji <xieyongji@bytedance.com>
Mon, 22 Nov 2021 09:05:31 +0000 (17:05 +0800)
committerMiklos Szeredi <mszeredi@redhat.com>
Tue, 7 Dec 2021 14:20:16 +0000 (15:20 +0100)
The acceptable maximum value of lend parameter in
filemap_write_and_wait_range() is LLONG_MAX rather than -1. And there is
also some logic depending on LLONG_MAX check in write_cache_pages(). So
let's pass LLONG_MAX to filemap_write_and_wait_range() in
fuse_writeback_range() instead.

Fixes: 59bda8ecee2f ("fuse: flush extending writes")
Signed-off-by: Xie Yongji <xieyongji@bytedance.com>
Cc: <stable@vger.kernel.org> # v5.15
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
fs/fuse/file.c

index 9d6c5f6361f7d907cefafa60ee0f14c2450c5165..df81768c81a73efdaf7d1b46dc238686dfa12469 100644 (file)
@@ -2910,7 +2910,7 @@ fuse_direct_IO(struct kiocb *iocb, struct iov_iter *iter)
 
 static int fuse_writeback_range(struct inode *inode, loff_t start, loff_t end)
 {
-       int err = filemap_write_and_wait_range(inode->i_mapping, start, -1);
+       int err = filemap_write_and_wait_range(inode->i_mapping, start, LLONG_MAX);
 
        if (!err)
                fuse_sync_writes(inode);