diff options
Diffstat (limited to 'fs/block_dev.c')
-rw-r--r-- | fs/block_dev.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/fs/block_dev.c b/fs/block_dev.c index 6e3de63c3055..bcd7f97beab9 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c | |||
@@ -1597,6 +1597,16 @@ ssize_t blkdev_write_iter(struct kiocb *iocb, struct iov_iter *from) | |||
1597 | struct file *file = iocb->ki_filp; | 1597 | struct file *file = iocb->ki_filp; |
1598 | struct blk_plug plug; | 1598 | struct blk_plug plug; |
1599 | ssize_t ret; | 1599 | ssize_t ret; |
1600 | size_t count = iov_iter_count(from); | ||
1601 | |||
1602 | ret = generic_write_checks(file, &iocb->ki_pos, &count, 1); | ||
1603 | if (ret) | ||
1604 | return ret; | ||
1605 | |||
1606 | if (count == 0) | ||
1607 | return 0; | ||
1608 | |||
1609 | iov_iter_truncate(from, count); | ||
1600 | 1610 | ||
1601 | blk_start_plug(&plug); | 1611 | blk_start_plug(&plug); |
1602 | ret = __generic_file_write_iter(iocb, from); | 1612 | ret = __generic_file_write_iter(iocb, from); |