aboutsummaryrefslogtreecommitdiffstats
diff options
authorHerbert Xu <herbert@gondor.apana.org.au>2026-04-04 08:29:58 +0800
committerHerbert Xu <herbert@gondor.apana.org.au>2026-04-12 13:38:19 +0800
commit31d00156e50ecad37f2cb6cbf04aaa9a260505ef (patch)
tree4c3c33ab33c116e7f0f977adbd1672aaec8a5d9f
parent8eceab19eba9dcbfd2a0daec72e1bf48aa100170 (diff)
downloadlinux-next-history-31d00156e50ecad37f2cb6cbf04aaa9a260505ef.tar.gz
crypto: af_alg - Fix page reassignment overflow in af_alg_pull_tsgl
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>
-rw-r--r--crypto/af_alg.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/crypto/af_alg.c b/crypto/af_alg.c
index 437f3e77c7e0e..dd0e5be4d8c07 100644
--- a/crypto/af_alg.c
+++ b/crypto/af_alg.c
@@ -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++;