]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - fs/block_dev.c
bio-integrity: Restore original iterator on verify stage
[karo-tx-linux.git] / fs / block_dev.c
index dd91c99e9ba05932d88a96f17250a91cbb5a6c10..a7df151f8aba8ba1447ff4094192754fbea76426 100644 (file)
@@ -225,6 +225,7 @@ __blkdev_direct_IO_simple(struct kiocb *iocb, struct iov_iter *iter,
        bio_init(&bio, vecs, nr_pages);
        bio.bi_bdev = bdev;
        bio.bi_iter.bi_sector = pos >> 9;
+       bio.bi_write_hint = iocb->ki_hint;
        bio.bi_private = current;
        bio.bi_end_io = blkdev_bio_end_io_simple;
 
@@ -263,7 +264,10 @@ __blkdev_direct_IO_simple(struct kiocb *iocb, struct iov_iter *iter,
                kfree(vecs);
 
        if (unlikely(bio.bi_status))
-               return blk_status_to_errno(bio.bi_status);
+               ret = blk_status_to_errno(bio.bi_status);
+
+       bio_uninit(&bio);
+
        return ret;
 }
 
@@ -360,6 +364,7 @@ __blkdev_direct_IO(struct kiocb *iocb, struct iov_iter *iter, int nr_pages)
        for (;;) {
                bio->bi_bdev = bdev;
                bio->bi_iter.bi_sector = pos >> 9;
+               bio->bi_write_hint = iocb->ki_hint;
                bio->bi_private = dio;
                bio->bi_end_io = blkdev_bio_end_io;