Commit c1d4d6a9 authored by Al Viro's avatar Al Viro
Browse files

copy_page_to_iter(): don't bother with kmap_atomic() for bvec/kvec cases



kmap_local_page() is enough there.  Moreover, we can use _copy_to_iter()
for actual copying in those cases - no useful extra checks on the
address we are copying from in that call.

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 4b179e9a
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -821,9 +821,9 @@ static size_t __copy_page_to_iter(struct page *page, size_t offset, size_t bytes
	if (likely(iter_is_iovec(i)))
		return copy_page_to_iter_iovec(page, offset, bytes, i);
	if (iov_iter_is_bvec(i) || iov_iter_is_kvec(i) || iov_iter_is_xarray(i)) {
		void *kaddr = kmap_atomic(page);
		size_t wanted = copy_to_iter(kaddr + offset, bytes, i);
		kunmap_atomic(kaddr);
		void *kaddr = kmap_local_page(page);
		size_t wanted = _copy_to_iter(kaddr + offset, bytes, i);
		kunmap_local(kaddr);
		return wanted;
	}
	if (iov_iter_is_pipe(i))