diff mbox series

crypto: octeontx2: Fix cptvf driver cleanup

Message ID 20231211044558.41461-1-bbhushan2@marvell.com (mailing list archive)
State Superseded
Headers show
Series crypto: octeontx2: Fix cptvf driver cleanup | expand

Commit Message

Bharat Bhushan Dec. 11, 2023, 4:45 a.m. UTC
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.
 - Missing otx2_cptlf_shutdown() from cptvf driver cleanup

Signed-off-by: Bharat Bhushan <bbhushan2@marvell.com>
---
 drivers/crypto/marvell/octeontx2/otx2_cptlf.c      |  6 ++++--
 drivers/crypto/marvell/octeontx2/otx2_cptvf_main.c | 10 ++++------
 2 files changed, 8 insertions(+), 8 deletions(-)

Comments

Herbert Xu Dec. 15, 2023, 9:58 a.m. UTC | #1
On Mon, Dec 11, 2023 at 10:15:58AM +0530, Bharat Bhushan wrote:
> 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.
>  - Missing otx2_cptlf_shutdown() from cptvf driver cleanup
> 
> Signed-off-by: Bharat Bhushan <bbhushan2@marvell.com>
> ---
>  drivers/crypto/marvell/octeontx2/otx2_cptlf.c      |  6 ++++--
>  drivers/crypto/marvell/octeontx2/otx2_cptvf_main.c | 10 ++++------
>  2 files changed, 8 insertions(+), 8 deletions(-)

Patch applied.  Thanks.
diff mbox series

Patch

diff --git a/drivers/crypto/marvell/octeontx2/otx2_cptlf.c b/drivers/crypto/marvell/octeontx2/otx2_cptlf.c
index 6edd27ff8c4e..e4bd3f030cec 100644
--- a/drivers/crypto/marvell/octeontx2/otx2_cptlf.c
+++ b/drivers/crypto/marvell/octeontx2/otx2_cptlf.c
@@ -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);
 
diff --git a/drivers/crypto/marvell/octeontx2/otx2_cptvf_main.c b/drivers/crypto/marvell/octeontx2/otx2_cptvf_main.c
index 69a447d3702c..123ad147545e 100644
--- a/drivers/crypto/marvell/octeontx2/otx2_cptvf_main.c
+++ b/drivers/crypto/marvell/octeontx2/otx2_cptvf_main.c
@@ -239,18 +239,16 @@  static void cptvf_lf_shutdown(struct otx2_cptlfs_info *lfs)
 {
 	atomic_set(&lfs->state, OTX2_CPTLF_IN_RESET);
 
-	/* Remove interrupts affinity */
-	otx2_cptlf_free_irqs_affinity(lfs);
-	/* Disable instruction queue */
-	otx2_cptlf_disable_iqueues(lfs);
 	/* Unregister crypto algorithms */
 	otx2_cpt_crypto_exit(lfs->pdev, THIS_MODULE);
+	/* Remove interrupts affinity */
+	otx2_cptlf_free_irqs_affinity(lfs);
 	/* Unregister LFs interrupts */
 	otx2_cptlf_unregister_interrupts(lfs);
 	/* Cleanup LFs software side */
 	lf_sw_cleanup(lfs);
-	/* Send request to detach LFs */
-	otx2_cpt_detach_rsrcs_msg(lfs);
+	/* CPT LFs cleanup */
+	otx2_cptlf_shutdown(lfs);
 }
 
 static int cptvf_lf_init(struct otx2_cptvf_dev *cptvf)