[PATCH] leds: powernv: add of_node_put()

Subsystems: led subsystem, the rest

STALE2826d

3 messages, 2 authors, 2018-11-22 · open the first message on its own page

[PATCH] leds: powernv: add of_node_put()

From: Yangtao Li <tiny.windzz@gmail.com>
Date: 2018-11-21 12:31:44

of_find_node_by_path() acquires a reference to the node returned by
it and that reference needs to be dropped by its caller.bl_idle_init()
doesn't do that, so fix it.

Signed-off-by: Yangtao Li <tiny.windzz@gmail.com>
---
 drivers/leds/leds-powernv.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/drivers/leds/leds-powernv.c b/drivers/leds/leds-powernv.c
index b1adbd70ce2e..0b1540029034 100644
--- a/drivers/leds/leds-powernv.c
+++ b/drivers/leds/leds-powernv.c
@@ -285,6 +285,7 @@ static int powernv_led_probe(struct platform_device *pdev)
 	struct device_node *led_node;
 	struct powernv_led_common *powernv_led_common;
 	struct device *dev = &pdev->dev;
+	int rc;
 
 	led_node = of_find_node_by_path("/ibm,opal/leds");
 	if (!led_node) {
@@ -295,15 +296,20 @@ static int powernv_led_probe(struct platform_device *pdev)
 
 	powernv_led_common = devm_kzalloc(dev, sizeof(*powernv_led_common),
 					  GFP_KERNEL);
-	if (!powernv_led_common)
-		return -ENOMEM;
+	if (!powernv_led_common){
+		rc = -ENOMEM;
+		goto out;
+	}
 
 	mutex_init(&powernv_led_common->lock);
 	powernv_led_common->max_led_type = cpu_to_be64(OPAL_SLOT_LED_TYPE_MAX);
 
 	platform_set_drvdata(pdev, powernv_led_common);
 
-	return powernv_led_classdev(pdev, led_node, powernv_led_common);
+	rc = powernv_led_classdev(pdev, led_node, powernv_led_common);
+out:
+	of_node_put(led_node);
+	return rc;
 }
 
 /* Platform driver remove */
-- 
2.17.0

Re: [PATCH] leds: powernv: add of_node_put()

From: Jacek Anaszewski <jacek.anaszewski@gmail.com>
Date: 2018-11-21 20:45:05

Hi Yangtao,

Thank you for the patch.

On 11/21/2018 01:31 PM, Yangtao Li wrote:
of_find_node_by_path() acquires a reference to the node returned by
it and that reference needs to be dropped by its caller.bl_idle_init()
doesn't do that, so fix it.
s/bl_idle_init/powernv_led_probe/

I suppose that you adopted the commit message from a fix
for drivers/cpuidle/cpuidle-big_little.c.
quoted hunk
Signed-off-by: Yangtao Li <tiny.windzz@gmail.com>
---
 drivers/leds/leds-powernv.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/drivers/leds/leds-powernv.c b/drivers/leds/leds-powernv.c
index b1adbd70ce2e..0b1540029034 100644
--- a/drivers/leds/leds-powernv.c
+++ b/drivers/leds/leds-powernv.c
@@ -285,6 +285,7 @@ static int powernv_led_probe(struct platform_device *pdev)
 	struct device_node *led_node;
 	struct powernv_led_common *powernv_led_common;
 	struct device *dev = &pdev->dev;
+	int rc;
 
 	led_node = of_find_node_by_path("/ibm,opal/leds");
 	if (!led_node) {
@@ -295,15 +296,20 @@ static int powernv_led_probe(struct platform_device *pdev)
 
 	powernv_led_common = devm_kzalloc(dev, sizeof(*powernv_led_common),
 					  GFP_KERNEL);
-	if (!powernv_led_common)
-		return -ENOMEM;
+	if (!powernv_led_common){
missing space:

s/){/) {/
+		rc = -ENOMEM;
+		goto out;
+	}
 
 	mutex_init(&powernv_led_common->lock);
 	powernv_led_common->max_led_type = cpu_to_be64(OPAL_SLOT_LED_TYPE_MAX);
 
 	platform_set_drvdata(pdev, powernv_led_common);
 
-	return powernv_led_classdev(pdev, led_node, powernv_led_common);
+	rc = powernv_led_classdev(pdev, led_node, powernv_led_common);
+out:
+	of_node_put(led_node);
+	return rc;
 }
 
 /* Platform driver remove */
I've fixed those trivial problems and applied the patch
to the for-next branch of linux-leds.git.

-- 
Best regards,
Jacek Anaszewski

Re: [PATCH] leds: powernv: add of_node_put()

From: Frank Lee <tiny.windzz@gmail.com>
Date: 2018-11-22 00:42:56

On Thu, Nov 22, 2018 at 4:45 AM Jacek Anaszewski
[off-list ref] wrote:
Hi Yangtao,

Thank you for the patch.

On 11/21/2018 01:31 PM, Yangtao Li wrote:
quoted
of_find_node_by_path() acquires a reference to the node returned by
it and that reference needs to be dropped by its caller.bl_idle_init()
doesn't do that, so fix it.
s/bl_idle_init/powernv_led_probe/

I suppose that you adopted the commit message from a fix
for drivers/cpuidle/cpuidle-big_little.c.
quoted
Signed-off-by: Yangtao Li <tiny.windzz@gmail.com>
---
 drivers/leds/leds-powernv.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/drivers/leds/leds-powernv.c b/drivers/leds/leds-powernv.c
index b1adbd70ce2e..0b1540029034 100644
--- a/drivers/leds/leds-powernv.c
+++ b/drivers/leds/leds-powernv.c
@@ -285,6 +285,7 @@ static int powernv_led_probe(struct platform_device *pdev)
      struct device_node *led_node;
      struct powernv_led_common *powernv_led_common;
      struct device *dev = &pdev->dev;
+     int rc;

      led_node = of_find_node_by_path("/ibm,opal/leds");
      if (!led_node) {
@@ -295,15 +296,20 @@ static int powernv_led_probe(struct platform_device *pdev)

      powernv_led_common = devm_kzalloc(dev, sizeof(*powernv_led_common),
                                        GFP_KERNEL);
-     if (!powernv_led_common)
-             return -ENOMEM;
+     if (!powernv_led_common){
missing space:

s/){/) {/
quoted
+             rc = -ENOMEM;
+             goto out;
+     }

      mutex_init(&powernv_led_common->lock);
      powernv_led_common->max_led_type = cpu_to_be64(OPAL_SLOT_LED_TYPE_MAX);

      platform_set_drvdata(pdev, powernv_led_common);

-     return powernv_led_classdev(pdev, led_node, powernv_led_common);
+     rc = powernv_led_classdev(pdev, led_node, powernv_led_common);
+out:
+     of_node_put(led_node);
+     return rc;
 }

 /* Platform driver remove */
I've fixed those trivial problems and applied the patch
to the for-next branch of linux-leds.git.

--
Best regards,
Jacek Anaszewski
Jacek,

Yeah,I forget to modify the changlog.

Thanks,
    Yangtao
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help