Commit c480a421 authored by Bharat Bhushan's avatar Bharat Bhushan Committed by Herbert Xu

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.
Signed-off-by: default avatarBharat Bhushan <bbhushan2@marvell.com>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent 9d7edaae
...@@ -419,8 +419,8 @@ int otx2_cptlf_init(struct otx2_cptlfs_info *lfs, u8 eng_grp_mask, int pri, ...@@ -419,8 +419,8 @@ int otx2_cptlf_init(struct otx2_cptlfs_info *lfs, u8 eng_grp_mask, int pri,
return 0; return 0;
free_iq: free_iq:
otx2_cpt_free_instruction_queues(lfs);
cptlf_hw_cleanup(lfs); cptlf_hw_cleanup(lfs);
otx2_cpt_free_instruction_queues(lfs);
detach_rsrcs: detach_rsrcs:
otx2_cpt_detach_rsrcs_msg(lfs); otx2_cpt_detach_rsrcs_msg(lfs);
clear_lfs_num: clear_lfs_num:
...@@ -431,11 +431,13 @@ EXPORT_SYMBOL_NS_GPL(otx2_cptlf_init, CRYPTO_DEV_OCTEONTX2_CPT); ...@@ -431,11 +431,13 @@ EXPORT_SYMBOL_NS_GPL(otx2_cptlf_init, CRYPTO_DEV_OCTEONTX2_CPT);
void otx2_cptlf_shutdown(struct otx2_cptlfs_info *lfs) void otx2_cptlf_shutdown(struct otx2_cptlfs_info *lfs)
{ {
lfs->lfs_num = 0;
/* Cleanup LFs hardware side */ /* Cleanup LFs hardware side */
cptlf_hw_cleanup(lfs); cptlf_hw_cleanup(lfs);
/* Free instruction queues */
otx2_cpt_free_instruction_queues(lfs);
/* Send request to detach LFs */ /* Send request to detach LFs */
otx2_cpt_detach_rsrcs_msg(lfs); otx2_cpt_detach_rsrcs_msg(lfs);
lfs->lfs_num = 0;
} }
EXPORT_SYMBOL_NS_GPL(otx2_cptlf_shutdown, CRYPTO_DEV_OCTEONTX2_CPT); EXPORT_SYMBOL_NS_GPL(otx2_cptlf_shutdown, CRYPTO_DEV_OCTEONTX2_CPT);
......
...@@ -249,8 +249,11 @@ static void cptvf_lf_shutdown(struct otx2_cptlfs_info *lfs) ...@@ -249,8 +249,11 @@ static void cptvf_lf_shutdown(struct otx2_cptlfs_info *lfs)
otx2_cptlf_unregister_interrupts(lfs); otx2_cptlf_unregister_interrupts(lfs);
/* Cleanup LFs software side */ /* Cleanup LFs software side */
lf_sw_cleanup(lfs); lf_sw_cleanup(lfs);
/* Free instruction queues */
otx2_cpt_free_instruction_queues(lfs);
/* Send request to detach LFs */ /* Send request to detach LFs */
otx2_cpt_detach_rsrcs_msg(lfs); otx2_cpt_detach_rsrcs_msg(lfs);
lfs->lfs_num = 0;
} }
static int cptvf_lf_init(struct otx2_cptvf_dev *cptvf) static int cptvf_lf_init(struct otx2_cptvf_dev *cptvf)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment