mm/fadvise: use LLONG_MAX instead of -1 for eof
authorBrian Foster <bfoster@redhat.com>
Mon, 28 Nov 2022 15:56:32 +0000 (10:56 -0500)
committerAndrew Morton <akpm@linux-foundation.org>
Mon, 12 Dec 2022 02:12:11 +0000 (18:12 -0800)
generic_fadvise() sets endbyte = -1 to specify end of file (i.e.  if
length == 0 is passed from userspace).  Most other callers to
filemap_fdatawrite_range() use LLONG_MAX for this purpose, particularly if
they also call fdatawait_range() (which requires end >= start).  For
example, sync_file_range(), vfs_fsync() (where the range is passed down
through per-fs ->fsync() callbacks), filemap_flush(), etc.
generic_fadvise() does not currently wait on writeback, but fix the call
up to be consistent with other callers.

Link: https://lkml.kernel.org/r/20221128155632.3950447-3-bfoster@redhat.com
Signed-off-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/fadvise.c

index c76ee66..bf04fec 100644 (file)
@@ -72,7 +72,7 @@ int generic_fadvise(struct file *file, loff_t offset, loff_t len, int advice)
         */
        endbyte = (u64)offset + (u64)len;
        if (!len || endbyte < len)
-               endbyte = -1;
+               endbyte = LLONG_MAX;
        else
                endbyte--;              /* inclusive */