2018-08-09 13:54:16

by zhong jiang

[permalink] [raw]
Subject: [PATCH] drivers/thermal/tegra: fix a doule free devce node

Device node iterators will get the return node. Meawhile, It is
also put the previous device node. An explicit put will cause
a double put.

Signed-off-by: zhong jiang <[email protected]>
---
drivers/thermal/tegra/soctherm.c | 1 -
1 file changed, 1 deletion(-)

diff --git a/drivers/thermal/tegra/soctherm.c b/drivers/thermal/tegra/soctherm.c
index ed28110..3aa55c9 100644
--- a/drivers/thermal/tegra/soctherm.c
+++ b/drivers/thermal/tegra/soctherm.c
@@ -980,7 +980,6 @@ static void soctherm_init_hw_throt_cdev(struct platform_device *pdev)
tcd = thermal_of_cooling_device_register(np_stcc,
(char *)name, ts,
&throt_cooling_ops);
- of_node_put(np_stcc);
if (IS_ERR_OR_NULL(tcd)) {
dev_err(dev,
"throttle-cfg: %s: failed to register cooling device\n",
--
1.7.12.4



2018-08-13 18:31:47

by Jon Hunter

[permalink] [raw]
Subject: Re: [PATCH] drivers/thermal/tegra: fix a doule free devce node


On 09/08/18 14:40, zhong jiang wrote:
> Device node iterators will get the return node. Meawhile, It is
> also put the previous device node. An explicit put will cause
> a double put.
>
> Signed-off-by: zhong jiang <[email protected]>
> ---
> drivers/thermal/tegra/soctherm.c | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/drivers/thermal/tegra/soctherm.c b/drivers/thermal/tegra/soctherm.c
> index ed28110..3aa55c9 100644
> --- a/drivers/thermal/tegra/soctherm.c
> +++ b/drivers/thermal/tegra/soctherm.c
> @@ -980,7 +980,6 @@ static void soctherm_init_hw_throt_cdev(struct platform_device *pdev)
> tcd = thermal_of_cooling_device_register(np_stcc,
> (char *)name, ts,
> &throt_cooling_ops);
> - of_node_put(np_stcc);
> if (IS_ERR_OR_NULL(tcd)) {
> dev_err(dev,
> "throttle-cfg: %s: failed to register cooling device\n",
>

Thanks!

Acked-by: Jon Hunter <[email protected]>

Cheers
Jon

--
nvpublic

2018-08-13 18:59:26

by Jon Hunter

[permalink] [raw]
Subject: Re: [PATCH] drivers/thermal/tegra: fix a doule free devce node

Adding linux-tegra ...

On 13/08/18 19:30, Jon Hunter wrote:
>
> On 09/08/18 14:40, zhong jiang wrote:
>> Device node iterators will get the return node. Meawhile, It is
>> also put the previous device node. An explicit put will cause
>> a double put.
>>
>> Signed-off-by: zhong jiang <[email protected]>
>> ---
>> drivers/thermal/tegra/soctherm.c | 1 -
>> 1 file changed, 1 deletion(-)
>>
>> diff --git a/drivers/thermal/tegra/soctherm.c b/drivers/thermal/tegra/soctherm.c
>> index ed28110..3aa55c9 100644
>> --- a/drivers/thermal/tegra/soctherm.c
>> +++ b/drivers/thermal/tegra/soctherm.c
>> @@ -980,7 +980,6 @@ static void soctherm_init_hw_throt_cdev(struct platform_device *pdev)
>> tcd = thermal_of_cooling_device_register(np_stcc,
>> (char *)name, ts,
>> &throt_cooling_ops);
>> - of_node_put(np_stcc);
>> if (IS_ERR_OR_NULL(tcd)) {
>> dev_err(dev,
>> "throttle-cfg: %s: failed to register cooling device\n",
>>
>
> Thanks!
>
> Acked-by: Jon Hunter <[email protected]>

Just need to fix the typos in the subject and commit log.

Cheers
Jon

--
nvpublic

2018-08-14 06:58:31

by Daniel Lezcano

[permalink] [raw]
Subject: Re: [PATCH] drivers/thermal/tegra: fix a doule free devce node

On 09/08/2018 15:40, zhong jiang wrote:
> Device node iterators will get the return node. Meawhile, It is
> also put the previous device node. An explicit put will cause
> a double put.

What about:

Subject: drivers/thermal/tegra: Fix a double free on the device node

"The function 'for_each_child_of_node' iterates over the node list by
dropping the of_node reference of the previous node.

Calling of_node_put() on the iterator is pointless and leads to an
inconsistent refcounting in addition to a double free. Remove it."

> Signed-off-by: zhong jiang <[email protected]>
> ---
> drivers/thermal/tegra/soctherm.c | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/drivers/thermal/tegra/soctherm.c b/drivers/thermal/tegra/soctherm.c
> index ed28110..3aa55c9 100644
> --- a/drivers/thermal/tegra/soctherm.c
> +++ b/drivers/thermal/tegra/soctherm.c
> @@ -980,7 +980,6 @@ static void soctherm_init_hw_throt_cdev(struct platform_device *pdev)
> tcd = thermal_of_cooling_device_register(np_stcc,
> (char *)name, ts,
> &throt_cooling_ops);
> - of_node_put(np_stcc);
> if (IS_ERR_OR_NULL(tcd)) {
> dev_err(dev,
> "throttle-cfg: %s: failed to register cooling device\n",
>


--
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog


2018-08-14 07:16:35

by zhong jiang

[permalink] [raw]
Subject: Re: [PATCH] drivers/thermal/tegra: fix a doule free devce node

On 2018/8/14 14:39, Daniel Lezcano wrote:
> On 09/08/2018 15:40, zhong jiang wrote:
>> Device node iterators will get the return node. Meawhile, It is
>> also put the previous device node. An explicit put will cause
>> a double put.
> What about:
>
> Subject: drivers/thermal/tegra: Fix a double free on the device node
>
> "The function 'for_each_child_of_node' iterates over the node list by
> dropping the of_node reference of the previous node.
>
> Calling of_node_put() on the iterator is pointless and leads to an
> inconsistent refcounting in addition to a double free. Remove it."
Thank you for doing this. I am sorry for stupid issue.

Sincerely,
zhong jiang
>> Signed-off-by: zhong jiang <[email protected]>
>> ---
>> drivers/thermal/tegra/soctherm.c | 1 -
>> 1 file changed, 1 deletion(-)
>>
>> diff --git a/drivers/thermal/tegra/soctherm.c b/drivers/thermal/tegra/soctherm.c
>> index ed28110..3aa55c9 100644
>> --- a/drivers/thermal/tegra/soctherm.c
>> +++ b/drivers/thermal/tegra/soctherm.c
>> @@ -980,7 +980,6 @@ static void soctherm_init_hw_throt_cdev(struct platform_device *pdev)
>> tcd = thermal_of_cooling_device_register(np_stcc,
>> (char *)name, ts,
>> &throt_cooling_ops);
>> - of_node_put(np_stcc);
>> if (IS_ERR_OR_NULL(tcd)) {
>> dev_err(dev,
>> "throttle-cfg: %s: failed to register cooling device\n",
>>
>



2018-08-17 02:27:17

by zhong jiang

[permalink] [raw]
Subject: Re: [PATCH] drivers/thermal/tegra: fix a doule free devce node

On 2018/8/14 14:39, Daniel Lezcano wrote:
> On 09/08/2018 15:40, zhong jiang wrote:
>> Device node iterators will get the return node. Meawhile, It is
>> also put the previous device node. An explicit put will cause
>> a double put.
> What about:
>
> Subject: drivers/thermal/tegra: Fix a double free on the device node
>
> "The function 'for_each_child_of_node' iterates over the node list by
> dropping the of_node reference of the previous node.
>
> Calling of_node_put() on the iterator is pointless and leads to an
> inconsistent refcounting in addition to a double free. Remove it."
Hi, Daniel

Have you picked up the patch or should I repost the patch with above commit
message that you have suggested?

Thanks,
zhong jiang
>> Signed-off-by: zhong jiang <[email protected]>
>> ---
>> drivers/thermal/tegra/soctherm.c | 1 -
>> 1 file changed, 1 deletion(-)
>>
>> diff --git a/drivers/thermal/tegra/soctherm.c b/drivers/thermal/tegra/soctherm.c
>> index ed28110..3aa55c9 100644
>> --- a/drivers/thermal/tegra/soctherm.c
>> +++ b/drivers/thermal/tegra/soctherm.c
>> @@ -980,7 +980,6 @@ static void soctherm_init_hw_throt_cdev(struct platform_device *pdev)
>> tcd = thermal_of_cooling_device_register(np_stcc,
>> (char *)name, ts,
>> &throt_cooling_ops);
>> - of_node_put(np_stcc);
>> if (IS_ERR_OR_NULL(tcd)) {
>> dev_err(dev,
>> "throttle-cfg: %s: failed to register cooling device\n",
>>
>



2018-08-27 08:44:18

by Daniel Lezcano

[permalink] [raw]
Subject: Re: [PATCH] drivers/thermal/tegra: fix a doule free devce node

On 17/08/2018 04:25, zhong jiang wrote:
> On 2018/8/14 14:39, Daniel Lezcano wrote:
>> On 09/08/2018 15:40, zhong jiang wrote:
>>> Device node iterators will get the return node. Meawhile, It is
>>> also put the previous device node. An explicit put will cause
>>> a double put.
>> What about:
>>
>> Subject: drivers/thermal/tegra: Fix a double free on the device node
>>
>> "The function 'for_each_child_of_node' iterates over the node list by
>> dropping the of_node reference of the previous node.
>>
>> Calling of_node_put() on the iterator is pointless and leads to an
>> inconsistent refcounting in addition to a double free. Remove it."
> Hi, Daniel
>
> Have you picked up the patch or should I repost the patch with above commit
> message that you have suggested?
>
> Thanks,
> zhong jiang

Hi,

sorry for the delay.

It is not up to me to pick patches for the thermal framework. You should
repost the patch with the suggested commit log above if you agree with.

-- Daniel

>>> Signed-off-by: zhong jiang <[email protected]>
>>> ---
>>> drivers/thermal/tegra/soctherm.c | 1 -
>>> 1 file changed, 1 deletion(-)
>>>
>>> diff --git a/drivers/thermal/tegra/soctherm.c b/drivers/thermal/tegra/soctherm.c
>>> index ed28110..3aa55c9 100644
>>> --- a/drivers/thermal/tegra/soctherm.c
>>> +++ b/drivers/thermal/tegra/soctherm.c
>>> @@ -980,7 +980,6 @@ static void soctherm_init_hw_throt_cdev(struct platform_device *pdev)
>>> tcd = thermal_of_cooling_device_register(np_stcc,
>>> (char *)name, ts,
>>> &throt_cooling_ops);
>>> - of_node_put(np_stcc);
>>> if (IS_ERR_OR_NULL(tcd)) {
>>> dev_err(dev,
>>> "throttle-cfg: %s: failed to register cooling device\n",
>>>
>>
>
>


--
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog