[PATCH v3 1/2] wifi: ath11k: release QMI handle on late init failures
Jeff Johnson
jeff.johnson at oss.qualcomm.com
Thu Jul 23 18:02:10 PDT 2026
On 7/18/2026 12:40 AM, Guangshuo Li wrote:
(dropping obsolete @quicinc.com and @codeaurora.org e-mail addresses)
> ath11k_qmi_init_service() initializes the QMI handle before allocating
> the QMI event workqueue and registering the service lookup.
>
> If either of these later initialization steps fails, the function
> returns without releasing the initialized QMI handle, leaking its
> resources.
>
> Release the QMI handle on the late failure paths.
>
> Fixes: d5c65159f289 ("ath11k: driver for Qualcomm IEEE 802.11ax devices")
> Signed-off-by: Guangshuo Li <lgs201920130244 at gmail.com>
> ---
> drivers/net/wireless/ath/ath11k/qmi.c | 10 ++++++++--
> 1 file changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath11k/qmi.c b/drivers/net/wireless/ath/ath11k/qmi.c
> index 410a7ee076a0..6e3f82169d24 100644
> --- a/drivers/net/wireless/ath/ath11k/qmi.c
> +++ b/drivers/net/wireless/ath/ath11k/qmi.c
> @@ -3329,7 +3329,8 @@ int ath11k_qmi_init_service(struct ath11k_base *ab)
> ab->qmi.event_wq = alloc_ordered_workqueue("ath11k_qmi_driver_event", 0);
> if (!ab->qmi.event_wq) {
> ath11k_err(ab, "failed to allocate workqueue\n");
> - return -EFAULT;
> + ret = -EFAULT;
> + goto err_release_qmi_handle;
> }
>
> INIT_LIST_HEAD(&ab->qmi.event_list);
> @@ -3342,9 +3343,14 @@ int ath11k_qmi_init_service(struct ath11k_base *ab)
> if (ret < 0) {
> ath11k_warn(ab, "failed to add qmi lookup: %d\n", ret);
> destroy_workqueue(ab->qmi.event_wq);
Since you are adding cleanup labels, it would be more idiomatic to have a
separate err_destroy_workqueue: label to perform this cleanup
> - return ret;
> + goto err_release_qmi_handle;
> }
>
> + return ret;
> +
so here have
err_destroy_workqueue:
destroy_workqueue(ab->qmi.event_wq);
> +err_release_qmi_handle:
> + qmi_handle_release(&ab->qmi.handle);
> +
> return ret;
> }
>
same comment applies to ath12k
More information about the ath12k
mailing list