netfs: Fix netfs_extract_iter_to_sg() for ITER_UBUF/IOVEC
authorDavid Howells <dhowells@redhat.com>
Wed, 12 Apr 2023 12:18:57 +0000 (13:18 +0100)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 12 Apr 2023 16:26:36 +0000 (09:26 -0700)
Fix netfs_extract_iter_to_sg() for ITER_UBUF and ITER_IOVEC to set the
size of the page to the part of the page extracted, not the remaining
amount of data in the extracted page array at that point.

This doesn't yet affect anything as cifs, the only current user, only
passes in non-user-backed iterators.

Fixes: 018584697533 ("netfs: Add a function to extract an iterator into a scatterlist")
Signed-off-by: David Howells <dhowells@redhat.com>
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Cc: Steve French <sfrench@samba.org>
Cc: Shyam Prasad N <nspmangalore@gmail.com>
Cc: Rohith Surabattula <rohiths.msft@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/netfs/iterator.c

index e9a45dea748a2494707e851735deeafa1b89fdd2..8a4c866874297c18bdf63ebcf878d8e5b313b586 100644 (file)
@@ -139,7 +139,7 @@ static ssize_t netfs_extract_user_to_sg(struct iov_iter *iter,
                        size_t seg = min_t(size_t, PAGE_SIZE - off, len);
 
                        *pages++ = NULL;
-                       sg_set_page(sg, page, len, off);
+                       sg_set_page(sg, page, seg, off);
                        sgtable->nents++;
                        sg++;
                        len -= seg;