aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2017-09-24 09:25:39 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2017-10-11 17:23:40 -0400
commite81cef5d3001501350b4e596b4bd6dfd26187afa (patch)
treea668c5996d1a9a7627f8dde7162336188e7907e4
parentbio_map_user_iov(): get rid of the iov_for_each() (diff)
downloadwireguard-linux-e81cef5d3001501350b4e596b4bd6dfd26187afa.tar.xz
wireguard-linux-e81cef5d3001501350b4e596b4bd6dfd26187afa.zip
blk_rq_map_user_iov(): move iov_iter_advance() down
... into bio_{map,copy}_user_iov() Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
-rw-r--r--block/bio.c6
-rw-r--r--block/blk-map.c1
-rw-r--r--include/linux/bio.h4
3 files changed, 6 insertions, 5 deletions
diff --git a/block/bio.c b/block/bio.c
index d1ca7eecc8aa..cd1282db03cb 100644
--- a/block/bio.c
+++ b/block/bio.c
@@ -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:
diff --git a/block/blk-map.c b/block/blk-map.c
index 2547016aa7aa..891eea11f68e 100644
--- a/block/blk-map.c
+++ b/block/blk-map.c
@@ -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;
diff --git a/include/linux/bio.h b/include/linux/bio.h
index 275c91c99516..6050c0caa4e1 100644
--- a/include/linux/bio.h
+++ b/include/linux/bio.h
@@ -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);