diff mbox series

crypto: xilinx: call finalize with bh disabled

Message ID 20240128042906.557038-1-quanyang.wang@windriver.com
State Accepted
Commit a853450bf4c752e664abab0b2fad395b7ad7701c
Headers show
Series crypto: xilinx: call finalize with bh disabled | expand

Commit Message

Quanyang Wang Jan. 28, 2024, 4:29 a.m. UTC
From: Quanyang Wang <quanyang.wang@windriver.com>

When calling crypto_finalize_request, BH should be disabled to avoid
triggering the following calltrace:

    ------------[ cut here ]------------
    WARNING: CPU: 2 PID: 74 at crypto/crypto_engine.c:58 crypto_finalize_request+0xa0/0x118
    Modules linked in: cryptodev(O)
    CPU: 2 PID: 74 Comm: firmware:zynqmp Tainted: G           O       6.8.0-rc1-yocto-standard #323
    Hardware name: ZynqMP ZCU102 Rev1.0 (DT)
    pstate: 40000005 (nZcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    pc : crypto_finalize_request+0xa0/0x118
    lr : crypto_finalize_request+0x104/0x118
    sp : ffffffc085353ce0
    x29: ffffffc085353ce0 x28: 0000000000000000 x27: ffffff8808ea8688
    x26: ffffffc081715038 x25: 0000000000000000 x24: ffffff880100db00
    x23: ffffff880100da80 x22: 0000000000000000 x21: 0000000000000000
    x20: ffffff8805b14000 x19: ffffff880100da80 x18: 0000000000010450
    x17: 0000000000000000 x16: 0000000000000000 x15: 0000000000000000
    x14: 0000000000000003 x13: 0000000000000000 x12: ffffff880100dad0
    x11: 0000000000000000 x10: ffffffc0832dcd08 x9 : ffffffc0812416d8
    x8 : 00000000000001f4 x7 : ffffffc0830d2830 x6 : 0000000000000001
    x5 : ffffffc082091000 x4 : ffffffc082091658 x3 : 0000000000000000
    x2 : ffffffc7f9653000 x1 : 0000000000000000 x0 : ffffff8802d20000
    Call trace:
     crypto_finalize_request+0xa0/0x118
     crypto_finalize_aead_request+0x18/0x30
     zynqmp_handle_aes_req+0xcc/0x388
     crypto_pump_work+0x168/0x2d8
     kthread_worker_fn+0xfc/0x3a0
     kthread+0x118/0x138
     ret_from_fork+0x10/0x20
    irq event stamp: 40
    hardirqs last  enabled at (39): [<ffffffc0812416f8>] _raw_spin_unlock_irqrestore+0x70/0xb0
    hardirqs last disabled at (40): [<ffffffc08122d208>] el1_dbg+0x28/0x90
    softirqs last  enabled at (36): [<ffffffc080017dec>] kernel_neon_begin+0x8c/0xf0
    softirqs last disabled at (34): [<ffffffc080017dc0>] kernel_neon_begin+0x60/0xf0
    ---[ end trace 0000000000000000 ]---

Signed-off-by: Quanyang Wang <quanyang.wang@windriver.com>
---
 drivers/crypto/xilinx/zynqmp-aes-gcm.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Herbert Xu Feb. 9, 2024, 5 a.m. UTC | #1
On Sun, Jan 28, 2024 at 12:29:06PM +0800, quanyang.wang@windriver.com wrote:
> From: Quanyang Wang <quanyang.wang@windriver.com>
> 
> When calling crypto_finalize_request, BH should be disabled to avoid
> triggering the following calltrace:
> 
>     ------------[ cut here ]------------
>     WARNING: CPU: 2 PID: 74 at crypto/crypto_engine.c:58 crypto_finalize_request+0xa0/0x118
>     Modules linked in: cryptodev(O)
>     CPU: 2 PID: 74 Comm: firmware:zynqmp Tainted: G           O       6.8.0-rc1-yocto-standard #323
>     Hardware name: ZynqMP ZCU102 Rev1.0 (DT)
>     pstate: 40000005 (nZcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
>     pc : crypto_finalize_request+0xa0/0x118
>     lr : crypto_finalize_request+0x104/0x118
>     sp : ffffffc085353ce0
>     x29: ffffffc085353ce0 x28: 0000000000000000 x27: ffffff8808ea8688
>     x26: ffffffc081715038 x25: 0000000000000000 x24: ffffff880100db00
>     x23: ffffff880100da80 x22: 0000000000000000 x21: 0000000000000000
>     x20: ffffff8805b14000 x19: ffffff880100da80 x18: 0000000000010450
>     x17: 0000000000000000 x16: 0000000000000000 x15: 0000000000000000
>     x14: 0000000000000003 x13: 0000000000000000 x12: ffffff880100dad0
>     x11: 0000000000000000 x10: ffffffc0832dcd08 x9 : ffffffc0812416d8
>     x8 : 00000000000001f4 x7 : ffffffc0830d2830 x6 : 0000000000000001
>     x5 : ffffffc082091000 x4 : ffffffc082091658 x3 : 0000000000000000
>     x2 : ffffffc7f9653000 x1 : 0000000000000000 x0 : ffffff8802d20000
>     Call trace:
>      crypto_finalize_request+0xa0/0x118
>      crypto_finalize_aead_request+0x18/0x30
>      zynqmp_handle_aes_req+0xcc/0x388
>      crypto_pump_work+0x168/0x2d8
>      kthread_worker_fn+0xfc/0x3a0
>      kthread+0x118/0x138
>      ret_from_fork+0x10/0x20
>     irq event stamp: 40
>     hardirqs last  enabled at (39): [<ffffffc0812416f8>] _raw_spin_unlock_irqrestore+0x70/0xb0
>     hardirqs last disabled at (40): [<ffffffc08122d208>] el1_dbg+0x28/0x90
>     softirqs last  enabled at (36): [<ffffffc080017dec>] kernel_neon_begin+0x8c/0xf0
>     softirqs last disabled at (34): [<ffffffc080017dc0>] kernel_neon_begin+0x60/0xf0
>     ---[ end trace 0000000000000000 ]---
> 
> Signed-off-by: Quanyang Wang <quanyang.wang@windriver.com>
> ---
>  drivers/crypto/xilinx/zynqmp-aes-gcm.c | 3 +++
>  1 file changed, 3 insertions(+)

Patch applied.  Thanks.
diff mbox series

Patch

diff --git a/drivers/crypto/xilinx/zynqmp-aes-gcm.c b/drivers/crypto/xilinx/zynqmp-aes-gcm.c
index 3c205324b22b6..e614057188409 100644
--- a/drivers/crypto/xilinx/zynqmp-aes-gcm.c
+++ b/drivers/crypto/xilinx/zynqmp-aes-gcm.c
@@ -231,7 +231,10 @@  static int zynqmp_handle_aes_req(struct crypto_engine *engine,
 		err = zynqmp_aes_aead_cipher(areq);
 	}
 
+	local_bh_disable();
 	crypto_finalize_aead_request(engine, areq, err);
+	local_bh_enable();
+
 	return 0;
 }