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

csum_and_copy_to_iter(): handle ITER_DISCARD



Not hard to implement - we are not copying anything here, so
csum_and_memcpy() is not usable, but calculating a checksum
of source directly is trivial...

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 40a86061
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -1549,8 +1549,12 @@ size_t csum_and_copy_to_iter(const void *addr, size_t bytes, void *_csstate,
	__wsum sum, next;

	if (unlikely(iov_iter_is_discard(i))) {
		WARN_ON(1);	/* for now */
		return 0;
		// can't use csum_memcpy() for that one - data is not copied
		csstate->csum = csum_block_add(csstate->csum,
					       csum_partial(addr, bytes, 0),
					       csstate->off);
		csstate->off += bytes;
		return bytes;
	}

	sum = csum_shift(csstate->csum, csstate->off);