Fix iov_iter_extract_bvec_pages() to check if want_pages_array() fails and,
if so, return -ENOMEM appropriately.

Fixes: e4e535bff2bc ("iov_iter: don't require contiguous pages in 
iov_iter_extract_bvec_pages")
Link: 
https://sashiko.dev/#/patchset/20260608145432.681865-1-dhowells%40redhat.com
Signed-off-by: David Howells <[email protected]>
cc: Ming Lei <[email protected]>
cc: Paulo Alcantara <[email protected]>
cc: Matthew Wilcox <[email protected]>
cc: Christoph Hellwig <[email protected]>
cc: Jens Axboe <[email protected]>
cc: [email protected]
cc: [email protected]
---
 lib/iov_iter.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/lib/iov_iter.c b/lib/iov_iter.c
index dc9c6eb21bdb..6386ae4ef491 100644
--- a/lib/iov_iter.c
+++ b/lib/iov_iter.c
@@ -1631,6 +1631,8 @@ static ssize_t iov_iter_extract_bvec_pages(struct 
iov_iter *i,
        bi.bi_bvec_done = skip;
 
        maxpages = want_pages_array(pages, maxsize, skip, maxpages);
+       if (!maxpages)
+               return -ENOMEM;
 
        while (bi.bi_size && bi.bi_idx < i->nr_segs) {
                struct bio_vec bv = bvec_iter_bvec(i->bvec, bi);


Reply via email to