iomap: turn the byte variable in iomap_zero_iter into a ssize_t
authorChristoph Hellwig <hch@lst.de>
Wed, 8 Dec 2021 09:12:03 +0000 (10:12 +0100)
committerDan Williams <dan.j.williams@intel.com>
Wed, 8 Dec 2021 15:04:21 +0000 (07:04 -0800)
@bytes also holds the return value from iomap_write_end, which can
contain a negative error value.  As @bytes is always less than the page
size even the signed type can hold the entire possible range.

Fixes: c6f40468657d ("fsdax: decouple zeroing from the iomap buffered I/O code")
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20211208091203.2927754-1-hch@lst.de
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
fs/iomap/buffered-io.c

index b1511255b4df8a336b384ed3dd06b5e9ded7b6e6..ac040d607f4feb8610ce05a2603840e4069549f2 100644 (file)
@@ -883,7 +883,7 @@ static loff_t iomap_zero_iter(struct iomap_iter *iter, bool *did_zero)
 
        do {
                unsigned offset = offset_in_page(pos);
-               size_t bytes = min_t(u64, PAGE_SIZE - offset, length);
+               ssize_t bytes = min_t(u64, PAGE_SIZE - offset, length);
                struct page *page;
                int status;