crypto: octeontx2 - Fix cptvf driver cleanup
[ Upstream commit c480a421a4faf693c38e60b0fe6e554c9a3fee02 ] 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> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
75b0f71b26
commit
6c7bdb97d4
2 changed files with 7 additions and 2 deletions
|
|
@ -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);
|
||||||
|
|
||||||
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)
|
||||||
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)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue