crypto: algif_aead - fix reference counting of null skcipher
authorEric Biggers <ebiggers@google.com>
Tue, 28 Nov 2017 07:23:05 +0000 (23:23 -0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Wed, 29 Nov 2017 02:39:14 +0000 (13:39 +1100)
commitb32a7dc8aef1882fbf983eb354837488cc9d54dc
treeaa8d50f168a77514cf9f32ac98b179a0741b8fe4
parentd2890c3778b164fde587bc16583f3a1c87233ec5
crypto: algif_aead - fix reference counting of null skcipher

In the AEAD interface for AF_ALG, the reference to the "null skcipher"
held by each tfm was being dropped in the wrong place -- when each
af_alg_ctx was freed instead of when the aead_tfm was freed.  As
discovered by syzkaller, a specially crafted program could use this to
cause the null skcipher to be freed while it is still in use.

Fix it by dropping the reference in the right place.

Fixes: 72548b093ee3 ("crypto: algif_aead - copy AAD from src to dst")
Reported-by: syzbot <syzkaller@googlegroups.com>
Cc: <stable@vger.kernel.org> # v4.14+
Signed-off-by: Eric Biggers <ebiggers@google.com>
Reviewed-by: Stephan Mueller <smueller@chronox.de>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
crypto/algif_aead.c