summaryrefslogtreecommitdiffstats
path: root/crypto
diff options
context:
space:
mode:
authorLars Persson <lars.persson@axis.com>2015-08-25 11:59:15 +0200
committerHerbert Xu <herbert@gondor.apana.org.au>2015-08-25 21:13:20 +0800
commitbf433416e67597ba105ece55b3136557874945db (patch)
treea1dda9973c73ba88e203c931e77c6b4f51eb877e /crypto
parentdf9e21e100a65618b56971ec8da4975eb60e919d (diff)
downloadlinux-stable-bf433416e67597ba105ece55b3136557874945db.tar.gz
linux-stable-bf433416e67597ba105ece55b3136557874945db.tar.bz2
linux-stable-bf433416e67597ba105ece55b3136557874945db.zip
crypto: algif_aead - fix for multiple operations on AF_ALG sockets
The tsgl scatterlist must be re-initialized after each operation. Otherwise the sticky bits in the page_link will corrupt the list with pre-mature termination or false chaining. Signed-off-by: Lars Persson <larper@axis.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'crypto')
-rw-r--r--crypto/algif_aead.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/crypto/algif_aead.c b/crypto/algif_aead.c
index 38a6cab7aeca..0aa6fdfb448a 100644
--- a/crypto/algif_aead.c
+++ b/crypto/algif_aead.c
@@ -90,6 +90,7 @@ static void aead_put_sgl(struct sock *sk)
put_page(sg_page(sg + i));
sg_assign_page(sg + i, NULL);
}
+ sg_init_table(sg, ALG_MAX_PAGES);
sgl->cur = 0;
ctx->used = 0;
ctx->more = 0;