mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] remoteproc: qcom: q6v5: Release QMP handle on ICC path failure
@ 2026-06-23 13:20 Haoxiang Li
  2026-06-23 16:01 ` Mukesh Ojha
  0 siblings, 1 reply; 3+ messages in thread
From: Haoxiang Li @ 2026-06-23 13:20 UTC (permalink / raw)
  To: andersson, mathieu.poirier, djakov
  Cc: linux-arm-msm, linux-remoteproc, linux-kernel, Haoxiang Li

qcom_q6v5_init() acquires the QMP handle before getting the
interconnect path. If devm_of_icc_get() fails, the function
returns without releasing the QMP handle, leaking the device
reference acquired by qmp_get().

Release the QMP handle on the interconnect error path before returning.

Fixes: 8d9be5c6bdcd ("remoteproc: qcom: q6v5: Add interconnect path proxy vote")
Signed-off-by: Haoxiang Li <haoxiang_li2024@163.com>
---
 drivers/remoteproc/qcom_q6v5.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/remoteproc/qcom_q6v5.c b/drivers/remoteproc/qcom_q6v5.c
index 58d5b85e58cd..b57041a37d28 100644
--- a/drivers/remoteproc/qcom_q6v5.c
+++ b/drivers/remoteproc/qcom_q6v5.c
@@ -347,9 +347,11 @@ int qcom_q6v5_init(struct qcom_q6v5 *q6v5, struct platform_device *pdev,
 	}
 
 	q6v5->path = devm_of_icc_get(&pdev->dev, NULL);
-	if (IS_ERR(q6v5->path))
+	if (IS_ERR(q6v5->path)) {
+		qmp_put(q6v5->qmp);
 		return dev_err_probe(&pdev->dev, PTR_ERR(q6v5->path),
 				     "failed to acquire interconnect path\n");
+	}
 
 	return 0;
 }
-- 
2.25.1


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] remoteproc: qcom: q6v5: Release QMP handle on ICC path failure
  2026-06-23 13:20 [PATCH] remoteproc: qcom: q6v5: Release QMP handle on ICC path failure Haoxiang Li
@ 2026-06-23 16:01 ` Mukesh Ojha
  2026-06-23 16:11   ` Konrad Dybcio
  0 siblings, 1 reply; 3+ messages in thread
From: Mukesh Ojha @ 2026-06-23 16:01 UTC (permalink / raw)
  To: Haoxiang Li
  Cc: andersson, mathieu.poirier, djakov, linux-arm-msm,
	linux-remoteproc, linux-kernel

On Tue, Jun 23, 2026 at 09:20:15PM +0800, Haoxiang Li wrote:
> qcom_q6v5_init() acquires the QMP handle before getting the
> interconnect path. If devm_of_icc_get() fails, the function
> returns without releasing the QMP handle, leaking the device
> reference acquired by qmp_get().
> 
> Release the QMP handle on the interconnect error path before returning.
> 
> Fixes: 8d9be5c6bdcd ("remoteproc: qcom: q6v5: Add interconnect path proxy vote")
> Signed-off-by: Haoxiang Li <haoxiang_li2024@163.com>
> ---
>  drivers/remoteproc/qcom_q6v5.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/remoteproc/qcom_q6v5.c b/drivers/remoteproc/qcom_q6v5.c
> index 58d5b85e58cd..b57041a37d28 100644
> --- a/drivers/remoteproc/qcom_q6v5.c
> +++ b/drivers/remoteproc/qcom_q6v5.c
> @@ -347,9 +347,11 @@ int qcom_q6v5_init(struct qcom_q6v5 *q6v5, struct platform_device *pdev,
>  	}
>  
>  	q6v5->path = devm_of_icc_get(&pdev->dev, NULL);
> -	if (IS_ERR(q6v5->path))
> +	if (IS_ERR(q6v5->path)) {
> +		qmp_put(q6v5->qmp);
>  		return dev_err_probe(&pdev->dev, PTR_ERR(q6v5->path),
>  				     "failed to acquire interconnect path\n");
> +	}

I would have preferred to move devm_of_icc_get before qmp_get()


--- a/drivers/remoteproc/qcom_q6v5.c
+++ b/drivers/remoteproc/qcom_q6v5.c
@@ -331,6 +331,11 @@ int qcom_q6v5_init(struct qcom_q6v5 *q6v5, struct platform_device *pdev,
                return PTR_ERR(q6v5->state);
        }

+       q6v5->path = devm_of_icc_get(&pdev->dev, NULL);
+       if (IS_ERR(q6v5->path))
+               return dev_err_probe(&pdev->dev, PTR_ERR(q6v5->path),
+                                    "failed to acquire interconnect path\n");
+
        q6v5->load_state = devm_kstrdup_const(&pdev->dev, load_state, GFP_KERNEL);
        q6v5->qmp = qmp_get(&pdev->dev);
        if (IS_ERR(q6v5->qmp)) {
@@ -346,11 +351,6 @@ int qcom_q6v5_init(struct qcom_q6v5 *q6v5, struct platform_device *pdev,
                return load_state ? -ENOMEM : -EINVAL;
        }

-       q6v5->path = devm_of_icc_get(&pdev->dev, NULL);
-       if (IS_ERR(q6v5->path))
-               return dev_err_probe(&pdev->dev, PTR_ERR(q6v5->path),
-                                    "failed to acquire interconnect path\n");
-
        return 0;


>  
>  	return 0;
>  }
> -- 
> 2.25.1
> 

-- 
-Mukesh Ojha

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] remoteproc: qcom: q6v5: Release QMP handle on ICC path failure
  2026-06-23 16:01 ` Mukesh Ojha
@ 2026-06-23 16:11   ` Konrad Dybcio
  0 siblings, 0 replies; 3+ messages in thread
From: Konrad Dybcio @ 2026-06-23 16:11 UTC (permalink / raw)
  To: Mukesh Ojha, Haoxiang Li
  Cc: andersson, mathieu.poirier, djakov, linux-arm-msm,
	linux-remoteproc, linux-kernel

On 6/23/26 6:01 PM, Mukesh Ojha wrote:
> On Tue, Jun 23, 2026 at 09:20:15PM +0800, Haoxiang Li wrote:
>> qcom_q6v5_init() acquires the QMP handle before getting the
>> interconnect path. If devm_of_icc_get() fails, the function
>> returns without releasing the QMP handle, leaking the device
>> reference acquired by qmp_get().
>>
>> Release the QMP handle on the interconnect error path before returning.
>>
>> Fixes: 8d9be5c6bdcd ("remoteproc: qcom: q6v5: Add interconnect path proxy vote")
>> Signed-off-by: Haoxiang Li <haoxiang_li2024@163.com>
>> ---
>>  drivers/remoteproc/qcom_q6v5.c | 4 +++-
>>  1 file changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/remoteproc/qcom_q6v5.c b/drivers/remoteproc/qcom_q6v5.c
>> index 58d5b85e58cd..b57041a37d28 100644
>> --- a/drivers/remoteproc/qcom_q6v5.c
>> +++ b/drivers/remoteproc/qcom_q6v5.c
>> @@ -347,9 +347,11 @@ int qcom_q6v5_init(struct qcom_q6v5 *q6v5, struct platform_device *pdev,
>>  	}
>>  
>>  	q6v5->path = devm_of_icc_get(&pdev->dev, NULL);
>> -	if (IS_ERR(q6v5->path))
>> +	if (IS_ERR(q6v5->path)) {
>> +		qmp_put(q6v5->qmp);
>>  		return dev_err_probe(&pdev->dev, PTR_ERR(q6v5->path),
>>  				     "failed to acquire interconnect path\n");
>> +	}
> 
> I would have preferred to move devm_of_icc_get before qmp_get()

Yeah this saves on cleanup

Konrad

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-06-23 16:11 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-06-23 13:20 [PATCH] remoteproc: qcom: q6v5: Release QMP handle on ICC path failure Haoxiang Li
2026-06-23 16:01 ` Mukesh Ojha
2026-06-23 16:11   ` Konrad Dybcio

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®