diff --git a/lib/iov_iter.c b/lib/iov_iter.c index 27234a820eeb..c3fd0448dead 100644 --- a/lib/iov_iter.c +++ b/lib/iov_iter.c @@ -1780,8 +1780,10 @@ static ssize_t iov_iter_extract_user_pages(struct iov_iter *i, if (!maxpages) return -ENOMEM; res = pin_user_pages_fast(addr, maxpages, gup_flags, *pages); - if (unlikely(res <= 0)) + if (unlikely(res <= 0)) { + kvfree(*pages); return res; + } maxsize = min_t(size_t, maxsize, res * PAGE_SIZE - offset); iov_iter_advance(i, maxsize); return maxsize;