summaryrefslogtreecommitdiffstats
path: root/lib/iov_iter.c
diff options
context:
space:
mode:
authorMing Lei <ming.lei@redhat.com>2024-11-02 02:42:11 +0100
committerJens Axboe <axboe@kernel.dk>2024-11-02 03:18:21 +0100
commit341468e0ab4bb1b26ad0b0cee7c6db4bf283043a (patch)
tree1cf1252e7c02a89e7d11a8f78ec9e3090a0516a9 /lib/iov_iter.c
parentloop: Simplify discard granularity calc (diff)
downloadlinux-341468e0ab4bb1b26ad0b0cee7c6db4bf283043a.tar.xz
linux-341468e0ab4bb1b26ad0b0cee7c6db4bf283043a.zip
lib/iov_iter: fix bvec iterator setup
.bi_size of bvec iterator should be initialized as real max size for walking, and .bi_bvec_done just counts how many bytes need to be skipped in the 1st bvec, so .bi_size isn't related with .bi_bvec_done. This patch fixes bvec iterator initialization, and the inner `size` check isn't needed any more, so revert Eric Dumazet's commit 7bc802acf193 ("iov-iter: do not return more bytes than requested in iov_iter_extract_bvec_pages()"). Cc: Eric Dumazet <edumazet@google.com> Fixes: e4e535bff2bc ("iov_iter: don't require contiguous pages in iov_iter_extract_bvec_pages") Reported-by: syzbot+71abe7ab2b70bca770fd@syzkaller.appspotmail.com Tested-by: syzbot+71abe7ab2b70bca770fd@syzkaller.appspotmail.com Signed-off-by: Ming Lei <ming.lei@redhat.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'lib/iov_iter.c')
-rw-r--r--lib/iov_iter.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/iov_iter.c b/lib/iov_iter.c
index c761f6db3cb4..4a54c7af62c0 100644
--- a/lib/iov_iter.c
+++ b/lib/iov_iter.c
@@ -1700,7 +1700,7 @@ static ssize_t iov_iter_extract_bvec_pages(struct iov_iter *i,
skip = 0;
}
bi.bi_idx = 0;
- bi.bi_size = maxsize + skip;
+ bi.bi_size = maxsize;
bi.bi_bvec_done = skip;
maxpages = want_pages_array(pages, maxsize, skip, maxpages);