@@ -302,16 +302,15 @@ static unsigned int bvec_from_pages(struct bio_vec *bvec, struct page **pages,
302302 return nr_bvecs ;
303303}
304304
305- int bio_integrity_map_user (struct bio * bio , void __user * ubuf , ssize_t bytes )
305+ int bio_integrity_map_user (struct bio * bio , struct iov_iter * iter )
306306{
307307 struct request_queue * q = bdev_get_queue (bio -> bi_bdev );
308308 unsigned int align = blk_lim_dma_alignment_and_pad (& q -> limits );
309309 struct page * stack_pages [UIO_FASTIOV ], * * pages = stack_pages ;
310310 struct bio_vec stack_vec [UIO_FASTIOV ], * bvec = stack_vec ;
311+ size_t offset , bytes = iter -> count ;
311312 unsigned int direction , nr_bvecs ;
312- struct iov_iter iter ;
313313 int ret , nr_vecs ;
314- size_t offset ;
315314 bool copy ;
316315
317316 if (bio_integrity (bio ))
@@ -324,8 +323,7 @@ int bio_integrity_map_user(struct bio *bio, void __user *ubuf, ssize_t bytes)
324323 else
325324 direction = ITER_SOURCE ;
326325
327- iov_iter_ubuf (& iter , direction , ubuf , bytes );
328- nr_vecs = iov_iter_npages (& iter , BIO_MAX_VECS + 1 );
326+ nr_vecs = iov_iter_npages (iter , BIO_MAX_VECS + 1 );
329327 if (nr_vecs > BIO_MAX_VECS )
330328 return - E2BIG ;
331329 if (nr_vecs > UIO_FASTIOV ) {
@@ -335,8 +333,8 @@ int bio_integrity_map_user(struct bio *bio, void __user *ubuf, ssize_t bytes)
335333 pages = NULL ;
336334 }
337335
338- copy = !iov_iter_is_aligned (& iter , align , align );
339- ret = iov_iter_extract_pages (& iter , & pages , bytes , nr_vecs , 0 , & offset );
336+ copy = !iov_iter_is_aligned (iter , align , align );
337+ ret = iov_iter_extract_pages (iter , & pages , bytes , nr_vecs , 0 , & offset );
340338 if (unlikely (ret < 0 ))
341339 goto free_bvec ;
342340
0 commit comments