提交 b282cc76 编写于 作者: A Al Viro

bio_map_user_iov(): get rid of the iov_for_each()

Use iov_iter_npages()
Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
上级 98f0bc99
......@@ -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);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册