From b282cc766958af161249b7b04d50e3eae12a2a1c Mon Sep 17 00:00:00 2001 From: Al Viro Date: Sat, 23 Sep 2017 16:24:59 -0400 Subject: bio_map_user_iov(): get rid of the iov_for_each() Use iov_iter_npages() Signed-off-by: Al Viro --- block/bio.c | 21 ++------------------- 1 file changed, 2 insertions(+), 19 deletions(-) (limited to 'block/bio.c') diff --git a/block/bio.c b/block/bio.c index d851f68727f17..d1ca7eecc8aa8 100644 --- a/block/bio.c +++ b/block/bio.c @@ -1324,32 +1324,15 @@ struct bio *bio_map_user_iov(struct request_queue *q, gfp_t gfp_mask) { int j; - int nr_pages = 0; struct bio *bio; int ret; struct iov_iter i; - struct iovec iov; struct bio_vec *bvec; - iov_for_each(iov, i, *iter) { - unsigned long uaddr = (unsigned long) iov.iov_base; - unsigned long len = iov.iov_len; - unsigned long end = (uaddr + len + PAGE_SIZE - 1) >> PAGE_SHIFT; - unsigned long start = uaddr >> PAGE_SHIFT; - - /* - * Overflow, abort - */ - if (end < start) - return ERR_PTR(-EINVAL); - - nr_pages += end - start; - } - - if (!nr_pages) + if (!iov_iter_count(iter)) return ERR_PTR(-EINVAL); - bio = bio_kmalloc(gfp_mask, nr_pages); + bio = bio_kmalloc(gfp_mask, iov_iter_npages(iter, BIO_MAX_PAGES)); if (!bio) return ERR_PTR(-ENOMEM); -- cgit v1.2.3