aboutsummaryrefslogtreecommitdiff
path: root/include/crypto
diff options
context:
space:
mode:
authorHerbert Xu2023-08-03 17:59:28 +0800
committerGreg Kroah-Hartman2023-09-13 09:42:32 +0200
commitc4cb61c5f976183c07d16b0071f0c60bc212ef1f (patch)
tree163f6d389bf24d1b27a1bbe78e09ecb903a0d06d /include/crypto
parent501f77cfce8a60d583ce20a0c3f3a3eee3e5521a (diff)
crypto: api - Use work queue in crypto_destroy_instance
[ Upstream commit 9ae4577bc077a7e32c3c7d442c95bc76865c0f17 ] The function crypto_drop_spawn expects to be called in process context. However, when an instance is unregistered while it still has active users, the last user may cause the instance to be freed in atomic context. Fix this by delaying the freeing to a work queue. Fixes: 6bfd48096ff8 ("[CRYPTO] api: Added spawns") Reported-by: Florent Revest <revest@chromium.org> Reported-by: syzbot+d769eed29cc42d75e2a3@syzkaller.appspotmail.com Reported-by: syzbot+610ec0671f51e838436e@syzkaller.appspotmail.com Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Tested-by: Florent Revest <revest@chromium.org> Acked-by: Florent Revest <revest@chromium.org> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'include/crypto')
-rw-r--r--include/crypto/algapi.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/include/crypto/algapi.h b/include/crypto/algapi.h
index 224b86064708..939a3196bf00 100644
--- a/include/crypto/algapi.h
+++ b/include/crypto/algapi.h
@@ -12,6 +12,7 @@
#include <linux/kconfig.h>
#include <linux/list.h>
#include <linux/types.h>
+#include <linux/workqueue.h>
#include <asm/unaligned.h>
@@ -60,6 +61,8 @@ struct crypto_instance {
struct crypto_spawn *spawns;
};
+ struct work_struct free_work;
+
void *__ctx[] CRYPTO_MINALIGN_ATTR;
};