diff options
author | Lars Persson <lars.persson@axis.com> | 2015-08-25 11:59:15 +0200 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2015-08-25 21:13:20 +0800 |
commit | bf433416e67597ba105ece55b3136557874945db (patch) | |
tree | a1dda9973c73ba88e203c931e77c6b4f51eb877e /crypto/algif_aead.c | |
parent | df9e21e100a65618b56971ec8da4975eb60e919d (diff) | |
download | linux-bf433416e67597ba105ece55b3136557874945db.tar.gz linux-bf433416e67597ba105ece55b3136557874945db.tar.bz2 linux-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/algif_aead.c')
-rw-r--r-- | crypto/algif_aead.c | 1 |
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; |