diff mbox series

[v2] drivers/thermal/tegra: Fix a double free on the device node

Message ID 1535376738-14035-1-git-send-email-zhongjiang@huawei.com
State Accepted
Headers show
Series [v2] drivers/thermal/tegra: Fix a double free on the device node | expand

Commit Message

zhong jiang Aug. 27, 2018, 1:32 p.m. UTC
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.

Acked-by: Jon Hunter <jonathanh@nvidia.com>
Signed-off-by: zhong jiang <zhongjiang@huawei.com>
---
v1->v2: According to Daniel's suggestion. I modify the subject and commit log.

 drivers/thermal/tegra/soctherm.c | 1 -
 1 file changed, 1 deletion(-)

Comments

Daniel Lezcano Aug. 27, 2018, 4:31 p.m. UTC | #1
On 27/08/2018 15:32, zhong jiang wrote:
> 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.
> 
> Acked-by: Jon Hunter <jonathanh@nvidia.com>
> Signed-off-by: zhong jiang <zhongjiang@huawei.com>

Reviewed-by: Daniel Lezcano <daniel.lezcano@linaro.org>

> ---
> v1->v2: According to Daniel's suggestion. I modify the subject and commit log.
> 
>  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",
>
Thierry Reding Sept. 26, 2018, 3:24 p.m. UTC | #2
On Mon, Aug 27, 2018 at 09:32:18PM +0800, zhong jiang wrote:
> 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.
> 
> Acked-by: Jon Hunter <jonathanh@nvidia.com>
> Signed-off-by: zhong jiang <zhongjiang@huawei.com>
> ---
> v1->v2: According to Daniel's suggestion. I modify the subject and commit log.
> 
>  drivers/thermal/tegra/soctherm.c | 1 -
>  1 file changed, 1 deletion(-)

Acked-by: Thierry Reding <treding@nvidia.com>
diff mbox series

Patch

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",