]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
crypto: af_alg - Fix page reassignment overflow in af_alg_pull_tsgl
authorHerbert Xu <herbert@gondor.apana.org.au>
Sat, 4 Apr 2026 00:29:58 +0000 (08:29 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Sun, 12 Apr 2026 05:38:19 +0000 (13:38 +0800)
When page reassignment was added to af_alg_pull_tsgl the original
loop wasn't updated so it may try to reassign one more page than
necessary.

Add the check to the reassignment so that this does not happen.

Also update the comment which still refers to the obsolete offset
argument.

Reported-by: syzbot+d23888375c2737c17ba5@syzkaller.appspotmail.com
Fixes: e870456d8e7c ("crypto: algif_skcipher - overhaul memory management")
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
crypto/af_alg.c

index 437f3e77c7e0e4f382fe1487647f101f04f32e5a..dd0e5be4d8c07a9eb83239b42bd546f3e941b7fe 100644 (file)
@@ -705,8 +705,8 @@ void af_alg_pull_tsgl(struct sock *sk, size_t used, struct scatterlist *dst)
                         * Assumption: caller created af_alg_count_tsgl(len)
                         * SG entries in dst.
                         */
-                       if (dst) {
-                               /* reassign page to dst after offset */
+                       if (dst && plen) {
+                               /* reassign page to dst */
                                get_page(page);
                                sg_set_page(dst + j, page, plen, sg[i].offset);
                                j++;