diff mbox series

[v2] bus/ti-sys: Fix refcount leak bugs

Message ID 20220620145619.4074665-1-windhl@126.com
State New
Headers show
Series [v2] bus/ti-sys: Fix refcount leak bugs | expand

Commit Message

Liang He June 20, 2022, 2:56 p.m. UTC
In sysc_init_stdout_path(), there is only one of_node_put() for the
second of_find_node_by_path(). However, we need to add one of_node_put()
for the first of_find_node_by_path().

In sysc_init_static_data(), we need one of_node_put() for the
of_find_node_by_path() to keep refcount balance.

Signed-off-by: Liang He <windhl@126.com>
---
 changelog:

 v2: merge two bugs into one commit
 v1: only find the bug in sysc_init_static_data()


 drivers/bus/ti-sysc.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Tony Lindgren June 28, 2022, 6:02 a.m. UTC | #1
* Liang He <windhl@126.com> [220620 17:51]:
> --- a/drivers/bus/ti-sysc.c
> +++ b/drivers/bus/ti-sysc.c
> @@ -751,6 +751,7 @@ static void sysc_init_stdout_path(struct sysc *ddata)
>  		goto err;
>  
>  	uart = of_get_property(np, "stdout-path", NULL);
> +	of_node_put(np);
>  	if (!uart)
>  		goto err;
>  

Looks like you missed another of_node_put() after of_find_node_by_path()
in sysc_init_stdout_path(). Please add it and repost.

Thanks,

Tony
Liang He June 28, 2022, 6:09 a.m. UTC | #2
At 2022-06-28 14:02:07, "Tony Lindgren" <tony@atomide.com> wrote:
>* Liang He <windhl@126.com> [220620 17:51]:
>> --- a/drivers/bus/ti-sysc.c
>> +++ b/drivers/bus/ti-sysc.c
>> @@ -751,6 +751,7 @@ static void sysc_init_stdout_path(struct sysc *ddata)
>>  		goto err;
>>  
>>  	uart = of_get_property(np, "stdout-path", NULL);
>> +	of_node_put(np);
>>  	if (!uart)
>>  		goto err;
>>  
>
>Looks like you missed another of_node_put() after of_find_node_by_path()
>in sysc_init_stdout_path(). Please add it and repost.
>
>Thanks,
>
>Tony

Thanks, I will resend a new patch soon.
Liang He June 28, 2022, 6:24 a.m. UTC | #3
At 2022-06-28 14:09:37, "Liang He" <windhl@126.com> wrote:
>
>
>
>At 2022-06-28 14:02:07, "Tony Lindgren" <tony@atomide.com> wrote:
>>* Liang He <windhl@126.com> [220620 17:51]:
>>> --- a/drivers/bus/ti-sysc.c
>>> +++ b/drivers/bus/ti-sysc.c
>>> @@ -751,6 +751,7 @@ static void sysc_init_stdout_path(struct sysc *ddata)
>>>  		goto err;
>>>  
>>>  	uart = of_get_property(np, "stdout-path", NULL);
>>> +	of_node_put(np);
>>>  	if (!uart)
>>>  		goto err;
>>>  
>>
>>Looks like you missed another of_node_put() after of_find_node_by_path()
>>in sysc_init_stdout_path(). Please add it and repost.
>>
>>Thanks,
>>
>>Tony
>

>Thanks, I will resend a new patch soon.


Sorry, Tony.


I have re-checked the sysc_init_stdout_path(), I think the second of_node_put 
is not needed as the second 'np' will be escaped out into global 'stdout_path'.


If my understanding is wrong, please correct me.


Thanks.
Liang
Tony Lindgren June 28, 2022, 6:34 a.m. UTC | #4
* Liang He <windhl@126.com> [220628 06:19]:
> I have re-checked the sysc_init_stdout_path(), I think the second of_node_put 
> is not needed as the second 'np' will be escaped out into global 'stdout_path'.

Yup you're right, thanks for checking it.

Regards,

Tony
diff mbox series

Patch

diff --git a/drivers/bus/ti-sysc.c b/drivers/bus/ti-sysc.c
index 9a7d12332fad..85a1003eb8e2 100644
--- a/drivers/bus/ti-sysc.c
+++ b/drivers/bus/ti-sysc.c
@@ -751,6 +751,7 @@  static void sysc_init_stdout_path(struct sysc *ddata)
 		goto err;
 
 	uart = of_get_property(np, "stdout-path", NULL);
+	of_node_put(np);
 	if (!uart)
 		goto err;
 
@@ -3138,6 +3139,7 @@  static int sysc_init_static_data(struct sysc *ddata)
 		np = of_find_node_by_path("/ocp");
 		WARN_ONCE(np && of_device_is_compatible(np, "simple-bus"),
 			  "ti-sysc: Incomplete old dtb, please update\n");
+		of_node_put(np);
 		break;
 	default:
 		break;