diff mbox series

[v2] hwmon: (gsc-hwmon) Add missing of_node_put()

Message ID 20220616114024.3985770-1-windhl@126.com (mailing list archive)
State Accepted
Headers show
Series [v2] hwmon: (gsc-hwmon) Add missing of_node_put() | expand

Commit Message

Liang He June 16, 2022, 11:40 a.m. UTC
In gsc_hwmon_get_devtree_pdata(), of_find_compatible_node() will return
a node pointer with refcount incremented. We should use of_node_put() in
fail path or when it is not used anymore.

Signed-off-by: Liang He <windhl@126.com>
---
 drivers/hwmon/gsc-hwmon.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Guenter Roeck June 17, 2022, 9:17 p.m. UTC | #1
On Thu, Jun 16, 2022 at 07:40:24PM +0800, Liang He wrote:
> In gsc_hwmon_get_devtree_pdata(), of_find_compatible_node() will return
> a node pointer with refcount incremented. We should use of_node_put() in
> fail path or when it is not used anymore.
> 
> Signed-off-by: Liang He <windhl@126.com>

Applied.

Thanks,
Guenter

> ---
>  drivers/hwmon/gsc-hwmon.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/hwmon/gsc-hwmon.c b/drivers/hwmon/gsc-hwmon.c
> index 1fe37418ff46..d64be48f1ef6 100644
> --- a/drivers/hwmon/gsc-hwmon.c
> +++ b/drivers/hwmon/gsc-hwmon.c
> @@ -269,10 +269,13 @@ gsc_hwmon_get_devtree_pdata(struct device *dev)
>  	/* fan controller base address */
>  	fan = of_find_compatible_node(dev->parent->of_node, NULL, "gw,gsc-fan");
>  	if (fan && of_property_read_u32(fan, "reg", &pdata->fan_base)) {
> +		of_node_put(fan);
>  		dev_err(dev, "fan node without base\n");
>  		return ERR_PTR(-EINVAL);
>  	}
>  
> +	of_node_put(fan);
> +
>  	/* allocate structures for channels and count instances of each type */
>  	device_for_each_child_node(dev, child) {
>  		if (fwnode_property_read_string(child, "label", &ch->name)) {
diff mbox series

Patch

diff --git a/drivers/hwmon/gsc-hwmon.c b/drivers/hwmon/gsc-hwmon.c
index 1fe37418ff46..d64be48f1ef6 100644
--- a/drivers/hwmon/gsc-hwmon.c
+++ b/drivers/hwmon/gsc-hwmon.c
@@ -269,10 +269,13 @@  gsc_hwmon_get_devtree_pdata(struct device *dev)
 	/* fan controller base address */
 	fan = of_find_compatible_node(dev->parent->of_node, NULL, "gw,gsc-fan");
 	if (fan && of_property_read_u32(fan, "reg", &pdata->fan_base)) {
+		of_node_put(fan);
 		dev_err(dev, "fan node without base\n");
 		return ERR_PTR(-EINVAL);
 	}
 
+	of_node_put(fan);
+
 	/* allocate structures for channels and count instances of each type */
 	device_for_each_child_node(dev, child) {
 		if (fwnode_property_read_string(child, "label", &ch->name)) {