diff mbox series

pmdomain: qcom: cpr: Fix possible uninitialized value

Message ID 20240930094456.2593136-1-ruanjinjie@huawei.com (mailing list archive)
State Handled Elsewhere, archived
Headers show
Series pmdomain: qcom: cpr: Fix possible uninitialized value | expand

Commit Message

Jinjie Ruan Sept. 30, 2024, 9:44 a.m. UTC
of_property_read_u64() can fail and left "rate" uninitialized,
and the zero check in cpr_corner_init() for cpr_get_opp_hz_for_req()
can not prevent it and it will assign cdata[level - 1].freq to random
value, so init it to fix it.

Cc: stable@vger.kernel.org # v6.12
Fixes: 181c8148556a ("pmdomain: qcom-cpr: Use scope based of_node_put() to simplify code.")
Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
---
 drivers/pmdomain/qcom/cpr.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

zhangzekun (A) Sept. 30, 2024, 9:53 a.m. UTC | #1
Hi, Jinjie

I have sent a patch with the same modification before:

https://lore.kernel.org/linux-pm/20240926134211.45394-1-zhangzekun11@huawei.com/

Best Regards,
Zekun

在 2024/9/30 17:44, Jinjie Ruan 写道:
> of_property_read_u64() can fail and left "rate" uninitialized,
> and the zero check in cpr_corner_init() for cpr_get_opp_hz_for_req()
> can not prevent it and it will assign cdata[level - 1].freq to random
> value, so init it to fix it.
> 
> Cc: stable@vger.kernel.org # v6.12
> Fixes: 181c8148556a ("pmdomain: qcom-cpr: Use scope based of_node_put() to simplify code.")
> Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
> ---
>   drivers/pmdomain/qcom/cpr.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/pmdomain/qcom/cpr.c b/drivers/pmdomain/qcom/cpr.c
> index e1fca65b80be..26a60a101e42 100644
> --- a/drivers/pmdomain/qcom/cpr.c
> +++ b/drivers/pmdomain/qcom/cpr.c
> @@ -1052,7 +1052,7 @@ static unsigned long cpr_get_opp_hz_for_req(struct dev_pm_opp *ref,
>   			of_parse_phandle(child_np, "required-opps", 0);
>   
>   		if (child_req_np == ref_np) {
> -			u64 rate;
> +			u64 rate = 0;
>   
>   			of_property_read_u64(child_np, "opp-hz", &rate);
>   			return (unsigned long) rate;
diff mbox series

Patch

diff --git a/drivers/pmdomain/qcom/cpr.c b/drivers/pmdomain/qcom/cpr.c
index e1fca65b80be..26a60a101e42 100644
--- a/drivers/pmdomain/qcom/cpr.c
+++ b/drivers/pmdomain/qcom/cpr.c
@@ -1052,7 +1052,7 @@  static unsigned long cpr_get_opp_hz_for_req(struct dev_pm_opp *ref,
 			of_parse_phandle(child_np, "required-opps", 0);
 
 		if (child_req_np == ref_np) {
-			u64 rate;
+			u64 rate = 0;
 
 			of_property_read_u64(child_np, "opp-hz", &rate);
 			return (unsigned long) rate;