]> www.infradead.org Git - users/hch/block.git/commitdiff
block: refine the EOF check in blkdev_iomap_begin blkdev_iomap_begin-fix
authorChristoph Hellwig <hch@lst.de>
Fri, 3 May 2024 05:48:42 +0000 (07:48 +0200)
committerChristoph Hellwig <hch@lst.de>
Fri, 3 May 2024 05:49:56 +0000 (07:49 +0200)
blkdev_iomap_begin rounds down the offset to the logical block size
before stashing it in iomap->offset and checking that it still is
inside the inode size.

Check the i_size check to the raw pos value so that we don't try a
zero size write if iter->pos is unaligned.

Signed-off-by: Christoph Hellwig <hch@lst.de>
block/fops.c

index 679d9b752fe828eb64b67d17e7492469c71e35d3..df2c68d3f198e186dfaca1085ce52efbc9b8b69d 100644 (file)
@@ -390,7 +390,7 @@ static int blkdev_iomap_begin(struct inode *inode, loff_t offset, loff_t length,
 
        iomap->bdev = bdev;
        iomap->offset = ALIGN_DOWN(offset, bdev_logical_block_size(bdev));
-       if (iomap->offset >= isize)
+       if (offset >= isize)
                return -EIO;
        iomap->type = IOMAP_MAPPED;
        iomap->addr = iomap->offset;