lib/iov_iter.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/iov_iter.c b/lib/iov_iter.c index e0aa6b440ca5..5236c16734e0 100644 --- a/lib/iov_iter.c +++ b/lib/iov_iter.c @@ -248,7 +248,10 @@ static __always_inline size_t memcpy_from_iter_mc(void *iter_from, size_t progress, size_t len, void *to, void *priv2) { - return copy_mc_to_kernel(to + progress, iter_from, len); + size_t n = copy_mc_to_kernel(to + progress, iter_from, len); + if (n) + memset(to + progress - n, 0, n); + return 0; } static size_t __copy_from_iter_mc(void *addr, size_t bytes, struct iov_iter *i)