crypto: octeontx2 - Fix cptvf driver cleanup
authorBharat Bhushan <bbhushan2@marvell.com>
Mon, 11 Dec 2023 10:29:11 +0000 (15:59 +0530)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 15 Dec 2023 09:52:54 +0000 (17:52 +0800)
This patch fixes following cleanup issues:
 - Missing instruction queue free on cleanup. This
   will lead to memory leak.
 - lfs->lfs_num is set to zero before cleanup, which
   will lead to improper cleanup.

Signed-off-by: Bharat Bhushan <bbhushan2@marvell.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/marvell/octeontx2/otx2_cptlf.c
drivers/crypto/marvell/octeontx2/otx2_cptvf_main.c

index 6edd27ff8c4e3c763c7c062e29db96c579a08943..e4bd3f030ceca7518cad77d2c27688d65a26e2df 100644 (file)
@@ -419,8 +419,8 @@ int otx2_cptlf_init(struct otx2_cptlfs_info *lfs, u8 eng_grp_mask, int pri,
        return 0;
 
 free_iq:
-       otx2_cpt_free_instruction_queues(lfs);
        cptlf_hw_cleanup(lfs);
+       otx2_cpt_free_instruction_queues(lfs);
 detach_rsrcs:
        otx2_cpt_detach_rsrcs_msg(lfs);
 clear_lfs_num:
@@ -431,11 +431,13 @@ EXPORT_SYMBOL_NS_GPL(otx2_cptlf_init, CRYPTO_DEV_OCTEONTX2_CPT);
 
 void otx2_cptlf_shutdown(struct otx2_cptlfs_info *lfs)
 {
-       lfs->lfs_num = 0;
        /* Cleanup LFs hardware side */
        cptlf_hw_cleanup(lfs);
+       /* Free instruction queues */
+       otx2_cpt_free_instruction_queues(lfs);
        /* Send request to detach LFs */
        otx2_cpt_detach_rsrcs_msg(lfs);
+       lfs->lfs_num = 0;
 }
 EXPORT_SYMBOL_NS_GPL(otx2_cptlf_shutdown, CRYPTO_DEV_OCTEONTX2_CPT);
 
index 69a447d3702c3105d91ef6819f354c1983a00476..7358fa656a5ef5021ed7b92e795360428b4ad38c 100644 (file)
@@ -249,8 +249,11 @@ static void cptvf_lf_shutdown(struct otx2_cptlfs_info *lfs)
        otx2_cptlf_unregister_interrupts(lfs);
        /* Cleanup LFs software side */
        lf_sw_cleanup(lfs);
+       /* Free instruction queues */
+       otx2_cpt_free_instruction_queues(lfs);
        /* Send request to detach LFs */
        otx2_cpt_detach_rsrcs_msg(lfs);
+       lfs->lfs_num = 0;
 }
 
 static int cptvf_lf_init(struct otx2_cptvf_dev *cptvf)