blk_rq_map_user_iov(): move iov_iter_advance() down
authorAl Viro <viro@zeniv.linux.org.uk>
Sun, 24 Sep 2017 13:25:39 +0000 (09:25 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Wed, 11 Oct 2017 21:23:40 +0000 (17:23 -0400)
... into bio_{map,copy}_user_iov()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
block/bio.c
block/blk-map.c
include/linux/bio.h

index d1ca7ee..cd1282d 100644 (file)
@@ -1195,7 +1195,7 @@ int bio_uncopy_user(struct bio *bio)
  */
 struct bio *bio_copy_user_iov(struct request_queue *q,
                              struct rq_map_data *map_data,
-                             const struct iov_iter *iter,
+                             struct iov_iter *iter,
                              gfp_t gfp_mask)
 {
        struct bio_map_data *bmd;
@@ -1298,6 +1298,7 @@ struct bio *bio_copy_user_iov(struct request_queue *q,
                if (ret)
                        goto cleanup;
        }
+       iov_iter_advance(iter, bio->bi_iter.bi_size);
 
        bio->bi_private = bmd;
        return bio;
@@ -1320,7 +1321,7 @@ out_bmd:
  *     device. Returns an error pointer in case of error.
  */
 struct bio *bio_map_user_iov(struct request_queue *q,
-                            const struct iov_iter *iter,
+                            struct iov_iter *iter,
                             gfp_t gfp_mask)
 {
        int j;
@@ -1399,6 +1400,7 @@ struct bio *bio_map_user_iov(struct request_queue *q,
         * reference to it
         */
        bio_get(bio);
+       iov_iter_advance(iter, bio->bi_iter.bi_size);
        return bio;
 
  out_unmap:
index 2547016..891eea1 100644 (file)
@@ -69,7 +69,6 @@ static int __blk_rq_map_user_iov(struct request *rq,
        if (map_data && map_data->null_mapped)
                bio_set_flag(bio, BIO_NULL_MAPPED);
 
-       iov_iter_advance(iter, bio->bi_iter.bi_size);
        if (map_data)
                map_data->offset += bio->bi_iter.bi_size;
 
index 275c91c..6050c0c 100644 (file)
@@ -462,7 +462,7 @@ extern int bio_add_pc_page(struct request_queue *, struct bio *, struct page *,
 int bio_iov_iter_get_pages(struct bio *bio, struct iov_iter *iter);
 struct rq_map_data;
 extern struct bio *bio_map_user_iov(struct request_queue *,
-                                   const struct iov_iter *, gfp_t);
+                                   struct iov_iter *, gfp_t);
 extern void bio_unmap_user(struct bio *);
 extern struct bio *bio_map_kern(struct request_queue *, void *, unsigned int,
                                gfp_t);
@@ -494,7 +494,7 @@ extern void bio_free_pages(struct bio *bio);
 
 extern struct bio *bio_copy_user_iov(struct request_queue *,
                                     struct rq_map_data *,
-                                    const struct iov_iter *,
+                                    struct iov_iter *,
                                     gfp_t);
 extern int bio_uncopy_user(struct bio *);
 void zero_fill_bio(struct bio *bio);