summaryrefslogtreecommitdiffstats
path: root/drivers/rtc/rtc-au1xxx.c
diff options
context:
space:
mode:
authorDaniel Jordan <daniel.m.jordan@oracle.com>2021-10-21 14:30:28 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2021-11-26 11:36:11 +0100
commitfca288ae3d058a4b795bdc5bb154b8ae5566636d (patch)
treef399f54fab5f254c0defa2e8d8082c1e60fc0529 /drivers/rtc/rtc-au1xxx.c
parentd9a5f6a33cd29df9bf8aceda839bdbc4ba3e1152 (diff)
downloadlinux-stable-fca288ae3d058a4b795bdc5bb154b8ae5566636d.tar.gz
linux-stable-fca288ae3d058a4b795bdc5bb154b8ae5566636d.tar.bz2
linux-stable-fca288ae3d058a4b795bdc5bb154b8ae5566636d.zip
crypto: pcrypt - Delay write to padata->info
[ Upstream commit 68b6dea802cea0dbdd8bd7ccc60716b5a32a5d8a ] These three events can race when pcrypt is used multiple times in a template ("pcrypt(pcrypt(...))"): 1. [taskA] The caller makes the crypto request via crypto_aead_encrypt() 2. [kworkerB] padata serializes the inner pcrypt request 3. [kworkerC] padata serializes the outer pcrypt request 3 might finish before the call to crypto_aead_encrypt() returns in 1, resulting in two possible issues. First, a use-after-free of the crypto request's memory when, for example, taskA writes to the outer pcrypt request's padata->info in pcrypt_aead_enc() after kworkerC completes the request. Second, the outer pcrypt request overwrites the inner pcrypt request's return code with -EINPROGRESS, making a successful request appear to fail. For instance, kworkerB writes the outer pcrypt request's padata->info in pcrypt_aead_done() and then taskA overwrites it in pcrypt_aead_enc(). Avoid both situations by delaying the write of padata->info until after the inner crypto request's return code is checked. This prevents the use-after-free by not touching the crypto request's memory after the next-inner crypto request is made, and stops padata->info from being overwritten. Fixes: 5068c7a883d16 ("crypto: pcrypt - Add pcrypt crypto parallelization wrapper") Reported-by: syzbot+b187b77c8474f9648fae@syzkaller.appspotmail.com Signed-off-by: Daniel Jordan <daniel.m.jordan@oracle.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'drivers/rtc/rtc-au1xxx.c')
0 files changed, 0 insertions, 0 deletions