Skip to content

Commit e5d416b

Browse files
Christian A. Ehrhardtgregkh
authored andcommitted
lib/scatterlist: fix temp buffer in extract_user_to_sg()
commit 118cf3f upstream. 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> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent e5e22fc commit e5d416b

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
@@ -1118,8 +1118,7 @@ static ssize_t extract_user_to_sg(struct iov_iter *iter,
11181118
size_t len, off;
11191119

11201120
/* We decant the page list into the tail of the scatterlist */
1121-
pages = (void *)sgtable->sgl +
1122-
array_size(sg_max, sizeof(struct scatterlist));
1121+
pages = (void *)sg + array_size(sg_max, sizeof(struct scatterlist));
11231122
pages -= sg_max;
11241123

11251124
do {

0 commit comments

Comments
 (0)