]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
crypto: stm32/cryp - call finalize with bh disabled
authorMaxime Méré <maxime.mere@foss.st.com>
Tue, 28 May 2024 14:05:48 +0000 (16:05 +0200)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 7 Jun 2024 11:46:39 +0000 (19:46 +0800)
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>
drivers/crypto/stm32/stm32-cryp.c

index 445276b848ed03f7c138578fecca60f4e7318317..937f6dab8955eea96a2ac744a7b4c1feb3f88fc8 100644 (file)
@@ -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/dma-mapping.h>
@@ -2203,8 +2204,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;
 }