Message ID | 1605571300-4438-1-git-send-email-bbhatt@codeaurora.org (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | ath11k: use MHI provided APIs to allocate and free MHI controller | expand |
+ath11k list On Mon, Nov 16, 2020 at 04:01:40PM -0800, Bhaumik Bhatt wrote: > Use MHI provided APIs to allocate and free MHI controller to > improve MHI host driver handling. This also fixes a memory leak > as the MHI controller was allocated but never freed. > > Signed-off-by: Bhaumik Bhatt <bbhatt@codeaurora.org> Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> Thanks, Mani > --- > drivers/net/wireless/ath/ath11k/mhi.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/drivers/net/wireless/ath/ath11k/mhi.c b/drivers/net/wireless/ath/ath11k/mhi.c > index aded9a7..1c9d9dc 100644 > --- a/drivers/net/wireless/ath/ath11k/mhi.c > +++ b/drivers/net/wireless/ath/ath11k/mhi.c > @@ -218,7 +218,7 @@ int ath11k_mhi_register(struct ath11k_pci *ab_pci) > struct mhi_controller *mhi_ctrl; > int ret; > > - mhi_ctrl = kzalloc(sizeof(*mhi_ctrl), GFP_KERNEL); > + mhi_ctrl = mhi_alloc_controller(); > if (!mhi_ctrl) > return -ENOMEM; > > @@ -234,7 +234,7 @@ int ath11k_mhi_register(struct ath11k_pci *ab_pci) > ret = ath11k_mhi_get_msi(ab_pci); > if (ret) { > ath11k_err(ab, "failed to get msi for mhi\n"); > - kfree(mhi_ctrl); > + mhi_free_controller(mhi_ctrl); > return ret; > } > > @@ -252,7 +252,7 @@ int ath11k_mhi_register(struct ath11k_pci *ab_pci) > ret = mhi_register_controller(mhi_ctrl, &ath11k_mhi_config); > if (ret) { > ath11k_err(ab, "failed to register to mhi bus, err = %d\n", ret); > - kfree(mhi_ctrl); > + mhi_free_controller(mhi_ctrl); > return ret; > } > > @@ -265,6 +265,7 @@ void ath11k_mhi_unregister(struct ath11k_pci *ab_pci) > > mhi_unregister_controller(mhi_ctrl); > kfree(mhi_ctrl->irq); > + mhi_free_controller(mhi_ctrl); > } > > static char *ath11k_mhi_state_to_str(enum ath11k_mhi_state mhi_state) > -- > The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, > a Linux Foundation Collaborative Project >
Bhaumik Bhatt <bbhatt@codeaurora.org> writes: > Use MHI provided APIs to allocate and free MHI controller to > improve MHI host driver handling. How does it improve the handling? > This also fixes a memory leak as the MHI controller was allocated but > never freed. > > Signed-off-by: Bhaumik Bhatt <bbhatt@codeaurora.org> > --- > drivers/net/wireless/ath/ath11k/mhi.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) For ath11k patches please CC ath11k and linux-wireless lists so that patchwork sees it. So you need to resend this. Is this a new API? I need to understand if there are any dependencies between mhi and ath trees, or if I can apply this directly to my ath.git tree.
On 2020-11-16 11:14 PM, Kalle Valo wrote: > Bhaumik Bhatt <bbhatt@codeaurora.org> writes: > >> Use MHI provided APIs to allocate and free MHI controller to >> improve MHI host driver handling. > > How does it improve the handling? > Main reason is we want to ensure the MHI controller is zero-initialized and we want to mandate it as it is better to have it under our control in case we also want to allocate and track peripheral data/memory related to the MHI controller. >> This also fixes a memory leak as the MHI controller was allocated but >> never freed. >> >> Signed-off-by: Bhaumik Bhatt <bbhatt@codeaurora.org> >> --- >> drivers/net/wireless/ath/ath11k/mhi.c | 7 ++++--- >> 1 file changed, 4 insertions(+), 3 deletions(-) > > For ath11k patches please CC ath11k and linux-wireless lists so that > patchwork sees it. So you need to resend this. > > Is this a new API? I need to understand if there are any dependencies > between mhi and ath trees, or if I can apply this directly to my > ath.git > tree. This one should be dependent on the patch [1] which exists on mainline and should already part of your tree if you're on any 5.10 RC. [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/bus/mhi?h=v5.10-rc4&id=f42dfbe8f712127031e7b9bc938a1c33cec2ff57 Thanks, Bhaumik --- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project
diff --git a/drivers/net/wireless/ath/ath11k/mhi.c b/drivers/net/wireless/ath/ath11k/mhi.c index aded9a7..1c9d9dc 100644 --- a/drivers/net/wireless/ath/ath11k/mhi.c +++ b/drivers/net/wireless/ath/ath11k/mhi.c @@ -218,7 +218,7 @@ int ath11k_mhi_register(struct ath11k_pci *ab_pci) struct mhi_controller *mhi_ctrl; int ret; - mhi_ctrl = kzalloc(sizeof(*mhi_ctrl), GFP_KERNEL); + mhi_ctrl = mhi_alloc_controller(); if (!mhi_ctrl) return -ENOMEM; @@ -234,7 +234,7 @@ int ath11k_mhi_register(struct ath11k_pci *ab_pci) ret = ath11k_mhi_get_msi(ab_pci); if (ret) { ath11k_err(ab, "failed to get msi for mhi\n"); - kfree(mhi_ctrl); + mhi_free_controller(mhi_ctrl); return ret; } @@ -252,7 +252,7 @@ int ath11k_mhi_register(struct ath11k_pci *ab_pci) ret = mhi_register_controller(mhi_ctrl, &ath11k_mhi_config); if (ret) { ath11k_err(ab, "failed to register to mhi bus, err = %d\n", ret); - kfree(mhi_ctrl); + mhi_free_controller(mhi_ctrl); return ret; } @@ -265,6 +265,7 @@ void ath11k_mhi_unregister(struct ath11k_pci *ab_pci) mhi_unregister_controller(mhi_ctrl); kfree(mhi_ctrl->irq); + mhi_free_controller(mhi_ctrl); } static char *ath11k_mhi_state_to_str(enum ath11k_mhi_state mhi_state)
Use MHI provided APIs to allocate and free MHI controller to improve MHI host driver handling. This also fixes a memory leak as the MHI controller was allocated but never freed. Signed-off-by: Bhaumik Bhatt <bbhatt@codeaurora.org> --- drivers/net/wireless/ath/ath11k/mhi.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)