Doing ipsec produces a spinlock recursion warning. This is due to not disabling BH during crypto completion function. Fixes: 59ca6c93387d3 ("virtio-crypto: implement RSA algorithm") Reported-by: Halil Pasic <pasic@xxxxxxxxxxxxx> Signed-off-by: Gonglei <arei.gonglei@xxxxxxxxxx> --- drivers/crypto/virtio/virtio_crypto_akcipher_algs.c | 3 ++- drivers/crypto/virtio/virtio_crypto_skcipher_algs.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/crypto/virtio/virtio_crypto_akcipher_algs.c b/drivers/crypto/virtio/virtio_crypto_akcipher_algs.c index 2621ff8a9376..19e2898977d3 100644 --- a/drivers/crypto/virtio/virtio_crypto_akcipher_algs.c +++ b/drivers/crypto/virtio/virtio_crypto_akcipher_algs.c @@ -61,8 +61,9 @@ static void virtio_crypto_akcipher_finalize_req( vc_akcipher_req->src_buf = NULL; vc_akcipher_req->dst_buf = NULL; virtcrypto_clear_request(&vc_akcipher_req->base); - + local_bh_disable(); crypto_finalize_akcipher_request(vc_akcipher_req->base.dataq->engine, req, err); + local_bh_enable(); } static void virtio_crypto_dataq_akcipher_callback(struct virtio_crypto_request *vc_req, int len) diff --git a/drivers/crypto/virtio/virtio_crypto_skcipher_algs.c b/drivers/crypto/virtio/virtio_crypto_skcipher_algs.c index 23c41d87d835..661c1102583e 100644 --- a/drivers/crypto/virtio/virtio_crypto_skcipher_algs.c +++ b/drivers/crypto/virtio/virtio_crypto_skcipher_algs.c @@ -566,9 +566,10 @@ static void virtio_crypto_skcipher_finalize_req( AES_BLOCK_SIZE, 0); kfree_sensitive(vc_sym_req->iv); virtcrypto_clear_request(&vc_sym_req->base); - + local_bh_disable(); crypto_finalize_skcipher_request(vc_sym_req->base.dataq->engine, req, err); + local_bh_enable(); } static struct virtio_crypto_algo virtio_crypto_algs[] = { { -- 2.23.0