summaryrefslogtreecommitdiff
path: root/drivers/crypto
diff options
context:
space:
mode:
authorMaxime Méré <maxime.mere@foss.st.com>2024-05-28 16:05:48 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2024-09-08 07:54:46 +0200
commitd93a2f86b0a998aa1f0870c85a2a60a0771ef89a (patch)
tree3fce2dfd0201eba17e3209abd2ea66adb59cbd32 /drivers/crypto
parent68957f511ba4514f9bbdb187d7826b56d40180ec (diff)
downloadlinux-d93a2f86b0a998aa1f0870c85a2a60a0771ef89a.tar.gz
linux-d93a2f86b0a998aa1f0870c85a2a60a0771ef89a.tar.bz2
linux-d93a2f86b0a998aa1f0870c85a2a60a0771ef89a.zip
crypto: stm32/cryp - call finalize with bh disabled
[ Upstream commit 56ddb9aa3b324c2d9645b5a7343e46010cf3f6ce ] The finalize operation in interrupt mode produce a produces a spinlock recursion warning. The reason is the fact that BH must be disabled during this process. Signed-off-by: Maxime Méré <maxime.mere@foss.st.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'drivers/crypto')
-rw-r--r--drivers/crypto/stm32/stm32-cryp.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/crypto/stm32/stm32-cryp.c b/drivers/crypto/stm32/stm32-cryp.c
index f095f0065428..2f1b82cf10b1 100644
--- a/drivers/crypto/stm32/stm32-cryp.c
+++ b/drivers/crypto/stm32/stm32-cryp.c
@@ -11,6 +11,7 @@
#include <crypto/internal/des.h>
#include <crypto/internal/skcipher.h>
#include <crypto/scatterwalk.h>
+#include <linux/bottom_half.h>
#include <linux/clk.h>
#include <linux/delay.h>
#include <linux/err.h>
@@ -1665,8 +1666,11 @@ static irqreturn_t stm32_cryp_irq_thread(int irq, void *arg)
it_mask &= ~IMSCR_OUT;
stm32_cryp_write(cryp, cryp->caps->imsc, it_mask);
- if (!cryp->payload_in && !cryp->header_in && !cryp->payload_out)
+ if (!cryp->payload_in && !cryp->header_in && !cryp->payload_out) {
+ local_bh_disable();
stm32_cryp_finish_req(cryp, 0);
+ local_bh_enable();
+ }
return IRQ_HANDLED;
}