|
@@ -1178,9 +1178,9 @@ do_blockdev_direct_IO(struct kiocb *iocb, struct inode *inode,
|
|
|
unsigned blkbits = i_blkbits;
|
|
|
unsigned blocksize_mask = (1 << blkbits) - 1;
|
|
|
ssize_t retval = -EINVAL;
|
|
|
- size_t count = iov_iter_count(iter);
|
|
|
+ const size_t count = iov_iter_count(iter);
|
|
|
loff_t offset = iocb->ki_pos;
|
|
|
- loff_t end = offset + count;
|
|
|
+ const loff_t end = offset + count;
|
|
|
struct dio *dio;
|
|
|
struct dio_submit sdio = { 0, };
|
|
|
struct buffer_head map_bh = { 0, };
|
|
@@ -1201,7 +1201,7 @@ do_blockdev_direct_IO(struct kiocb *iocb, struct inode *inode,
|
|
|
}
|
|
|
|
|
|
/* watch out for a 0 len io from a tricksy fs */
|
|
|
- if (iov_iter_rw(iter) == READ && !iov_iter_count(iter))
|
|
|
+ if (iov_iter_rw(iter) == READ && !count)
|
|
|
return 0;
|
|
|
|
|
|
dio = kmem_cache_alloc(dio_cache, GFP_KERNEL);
|
|
@@ -1318,8 +1318,7 @@ do_blockdev_direct_IO(struct kiocb *iocb, struct inode *inode,
|
|
|
|
|
|
dio->should_dirty = (iter->type == ITER_IOVEC);
|
|
|
sdio.iter = iter;
|
|
|
- sdio.final_block_in_request =
|
|
|
- (offset + iov_iter_count(iter)) >> blkbits;
|
|
|
+ sdio.final_block_in_request = end >> blkbits;
|
|
|
|
|
|
/*
|
|
|
* In case of non-aligned buffers, we may need 2 more
|