2023-12-11 04:46:37

by Bharat Bhushan

[permalink] [raw]
Subject: [PATCH] crypto: octeontx2: Fix cptvf driver cleanup

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 <[email protected]>
---
drivers/crypto/marvell/octeontx2/otx2_cptlf.c | 6 ++++--
drivers/crypto/marvell/octeontx2/otx2_cptvf_main.c | 10 ++++------
2 files changed, 8 insertions(+), 8 deletions(-)

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)
--
2.34.1



2023-12-15 09:59:04

by Herbert Xu

[permalink] [raw]
Subject: Re: [PATCH] crypto: octeontx2: Fix cptvf driver cleanup

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 <[email protected]>
> ---
> 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.
--
Email: Herbert Xu <[email protected]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt