Skip to content

Commit 118cf3f

Browse files
Christian A. Ehrhardtakpm00
authored andcommitted
lib/scatterlist: fix temp buffer in extract_user_to_sg()
Instead of allocating a temporary buffer for extracted user pages extract_user_to_sg() uses the end of the to be filled scatterlist as a temporary buffer. Fix the calculation of the start address if the scatterlist already contains elements. The unused space starts at sgtable->sgl + sgtable->nents not directly at sgtable->nents and the temporary buffer is placed at the end of this unused space. A subsequent commit will add kunit test cases that demonstrate that the patch is necessary. Pointed out by sashiko.dev on a previous iteration of this series. Link: https://lkml.kernel.org/r/20260326214905.818170-3-lk@c--e.de Fixes: 0185846 ("netfs: Add a function to extract an iterator into a scatterlist") Signed-off-by: Christian A. Ehrhardt <lk@c--e.de> Cc: David Howells <dhowells@redhat.com> Cc: David Gow <davidgow@google.com> Cc: Kees Cook <kees@kernel.org> Cc: Petr Mladek <pmladek@suse.com> Cc: <stable@vger.kernel.org> [v6.5+] Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
1 parent 07b7d66 commit 118cf3f

1 file changed

Lines changed: 1 addition & 2 deletions

File tree

lib/scatterlist.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1123,8 +1123,7 @@ static ssize_t extract_user_to_sg(struct iov_iter *iter,
11231123
size_t len, off;
11241124

11251125
/* We decant the page list into the tail of the scatterlist */
1126-
pages = (void *)sgtable->sgl +
1127-
array_size(sg_max, sizeof(struct scatterlist));
1126+
pages = (void *)sg + array_size(sg_max, sizeof(struct scatterlist));
11281127
pages -= sg_max;
11291128

11301129
do {

0 commit comments

Comments
 (0)