ext2: fix possible integer truncation in ext2_iomap_begin
authorChristoph Hellwig <hch@lst.de>
Sun, 2 Oct 2016 22:46:04 +0000 (09:46 +1100)
committerDave Chinner <david@fromorbit.com>
Sun, 2 Oct 2016 22:46:04 +0000 (09:46 +1100)
For 32-bit architectures we need to cast first_block to u64 before
shifting it left.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reported-by: Jan Kara <jack@suse.cz>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
fs/ext2/inode.c

index aae5f61f980bf0abd961e54ba4732fb761c15c16..c7dbb4661119ef8d17ef61a975393a161fbf31aa 100644 (file)
@@ -806,7 +806,7 @@ static int ext2_iomap_begin(struct inode *inode, loff_t offset, loff_t length,
 
        iomap->flags = 0;
        iomap->bdev = inode->i_sb->s_bdev;
-       iomap->offset = first_block << blkbits;
+       iomap->offset = (u64)first_block << blkbits;
 
        if (ret == 0) {
                iomap->type = IOMAP_HOLE;