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>
This commit is contained in:
@@ -1195,7 +1195,7 @@ int bio_uncopy_user(struct bio *bio)
|
|||||||
*/
|
*/
|
||||||
struct bio *bio_copy_user_iov(struct request_queue *q,
|
struct bio *bio_copy_user_iov(struct request_queue *q,
|
||||||
struct rq_map_data *map_data,
|
struct rq_map_data *map_data,
|
||||||
const struct iov_iter *iter,
|
struct iov_iter *iter,
|
||||||
gfp_t gfp_mask)
|
gfp_t gfp_mask)
|
||||||
{
|
{
|
||||||
struct bio_map_data *bmd;
|
struct bio_map_data *bmd;
|
||||||
@@ -1298,6 +1298,7 @@ struct bio *bio_copy_user_iov(struct request_queue *q,
|
|||||||
if (ret)
|
if (ret)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
iov_iter_advance(iter, bio->bi_iter.bi_size);
|
||||||
|
|
||||||
bio->bi_private = bmd;
|
bio->bi_private = bmd;
|
||||||
return bio;
|
return bio;
|
||||||
@@ -1320,7 +1321,7 @@ struct bio *bio_copy_user_iov(struct request_queue *q,
|
|||||||
* device. Returns an error pointer in case of error.
|
* device. Returns an error pointer in case of error.
|
||||||
*/
|
*/
|
||||||
struct bio *bio_map_user_iov(struct request_queue *q,
|
struct bio *bio_map_user_iov(struct request_queue *q,
|
||||||
const struct iov_iter *iter,
|
struct iov_iter *iter,
|
||||||
gfp_t gfp_mask)
|
gfp_t gfp_mask)
|
||||||
{
|
{
|
||||||
int j;
|
int j;
|
||||||
@@ -1399,6 +1400,7 @@ struct bio *bio_map_user_iov(struct request_queue *q,
|
|||||||
* reference to it
|
* reference to it
|
||||||
*/
|
*/
|
||||||
bio_get(bio);
|
bio_get(bio);
|
||||||
|
iov_iter_advance(iter, bio->bi_iter.bi_size);
|
||||||
return bio;
|
return bio;
|
||||||
|
|
||||||
out_unmap:
|
out_unmap:
|
||||||
|
|||||||
@@ -69,7 +69,6 @@ static int __blk_rq_map_user_iov(struct request *rq,
|
|||||||
if (map_data && map_data->null_mapped)
|
if (map_data && map_data->null_mapped)
|
||||||
bio_set_flag(bio, BIO_NULL_MAPPED);
|
bio_set_flag(bio, BIO_NULL_MAPPED);
|
||||||
|
|
||||||
iov_iter_advance(iter, bio->bi_iter.bi_size);
|
|
||||||
if (map_data)
|
if (map_data)
|
||||||
map_data->offset += bio->bi_iter.bi_size;
|
map_data->offset += bio->bi_iter.bi_size;
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
int bio_iov_iter_get_pages(struct bio *bio, struct iov_iter *iter);
|
||||||
struct rq_map_data;
|
struct rq_map_data;
|
||||||
extern struct bio *bio_map_user_iov(struct request_queue *,
|
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 void bio_unmap_user(struct bio *);
|
||||||
extern struct bio *bio_map_kern(struct request_queue *, void *, unsigned int,
|
extern struct bio *bio_map_kern(struct request_queue *, void *, unsigned int,
|
||||||
gfp_t);
|
gfp_t);
|
||||||
@@ -494,7 +494,7 @@ extern void bio_free_pages(struct bio *bio);
|
|||||||
|
|
||||||
extern struct bio *bio_copy_user_iov(struct request_queue *,
|
extern struct bio *bio_copy_user_iov(struct request_queue *,
|
||||||
struct rq_map_data *,
|
struct rq_map_data *,
|
||||||
const struct iov_iter *,
|
struct iov_iter *,
|
||||||
gfp_t);
|
gfp_t);
|
||||||
extern int bio_uncopy_user(struct bio *);
|
extern int bio_uncopy_user(struct bio *);
|
||||||
void zero_fill_bio(struct bio *bio);
|
void zero_fill_bio(struct bio *bio);
|
||||||
|
|||||||
Reference in New Issue
Block a user