diff options
Diffstat (limited to 'lib/iov_iter.c')
| -rw-r--r-- | lib/iov_iter.c | 31 | 
1 files changed, 16 insertions, 15 deletions
diff --git a/lib/iov_iter.c b/lib/iov_iter.c index 424737045b97..27234a820eeb 100644 --- a/lib/iov_iter.c +++ b/lib/iov_iter.c @@ -1557,6 +1557,7 @@ int import_ubuf(int rw, void __user *buf, size_t len, struct iov_iter *i)  	iov_iter_ubuf(i, rw, buf, len);  	return 0;  } +EXPORT_SYMBOL_GPL(import_ubuf);  /**   * iov_iter_restore() - Restore a &struct iov_iter to the same state as when @@ -1653,14 +1654,14 @@ static ssize_t iov_iter_extract_bvec_pages(struct iov_iter *i,  					   size_t *offset0)  {  	struct page **p, *page; -	size_t skip = i->iov_offset, offset; +	size_t skip = i->iov_offset, offset, size;  	int k;  	for (;;) {  		if (i->nr_segs == 0)  			return 0; -		maxsize = min(maxsize, i->bvec->bv_len - skip); -		if (maxsize) +		size = min(maxsize, i->bvec->bv_len - skip); +		if (size)  			break;  		i->iov_offset = 0;  		i->nr_segs--; @@ -1673,16 +1674,16 @@ static ssize_t iov_iter_extract_bvec_pages(struct iov_iter *i,  	offset = skip % PAGE_SIZE;  	*offset0 = offset; -	maxpages = want_pages_array(pages, maxsize, offset, maxpages); +	maxpages = want_pages_array(pages, size, offset, maxpages);  	if (!maxpages)  		return -ENOMEM;  	p = *pages;  	for (k = 0; k < maxpages; k++)  		p[k] = page + k; -	maxsize = min_t(size_t, maxsize, maxpages * PAGE_SIZE - offset); -	iov_iter_advance(i, maxsize); -	return maxsize; +	size = min_t(size_t, size, maxpages * PAGE_SIZE - offset); +	iov_iter_advance(i, size); +	return size;  }  /* @@ -1697,14 +1698,14 @@ static ssize_t iov_iter_extract_kvec_pages(struct iov_iter *i,  {  	struct page **p, *page;  	const void *kaddr; -	size_t skip = i->iov_offset, offset, len; +	size_t skip = i->iov_offset, offset, len, size;  	int k;  	for (;;) {  		if (i->nr_segs == 0)  			return 0; -		maxsize = min(maxsize, i->kvec->iov_len - skip); -		if (maxsize) +		size = min(maxsize, i->kvec->iov_len - skip); +		if (size)  			break;  		i->iov_offset = 0;  		i->nr_segs--; @@ -1716,13 +1717,13 @@ static ssize_t iov_iter_extract_kvec_pages(struct iov_iter *i,  	offset = (unsigned long)kaddr & ~PAGE_MASK;  	*offset0 = offset; -	maxpages = want_pages_array(pages, maxsize, offset, maxpages); +	maxpages = want_pages_array(pages, size, offset, maxpages);  	if (!maxpages)  		return -ENOMEM;  	p = *pages;  	kaddr -= offset; -	len = offset + maxsize; +	len = offset + size;  	for (k = 0; k < maxpages; k++) {  		size_t seg = min_t(size_t, len, PAGE_SIZE); @@ -1736,9 +1737,9 @@ static ssize_t iov_iter_extract_kvec_pages(struct iov_iter *i,  		kaddr += PAGE_SIZE;  	} -	maxsize = min_t(size_t, maxsize, maxpages * PAGE_SIZE - offset); -	iov_iter_advance(i, maxsize); -	return maxsize; +	size = min_t(size_t, size, maxpages * PAGE_SIZE - offset); +	iov_iter_advance(i, size); +	return size;  }  /*  |