mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Wen Yang <wen.yang99@zte.com.cn>
To: linux-kernel@vger.kernel.org
Cc: wang.yi59@zte.com.cn, Wen Yang <wen.yang99@zte.com.cn>,
	"Rafael J. Wysocki" <rjw@rjwysocki.net>,
	Viresh Kumar <viresh.kumar@linaro.org>,
	linux-pm@vger.kernel.org
Subject: [PATCH 3/7] cpufreq: kirkwood: fix possible object reference leak
Date: Mon, 1 Apr 2019 09:37:50 +0800	[thread overview]
Message-ID: <1554082674-2049-4-git-send-email-wen.yang99@zte.com.cn> (raw)
In-Reply-To: <1554082674-2049-1-git-send-email-wen.yang99@zte.com.cn>

The call to of_get_child_by_name returns a node pointer with refcount
incremented thus it must be explicitly decremented after the last
usage.

Detected by coccinelle with the following warnings:
./drivers/cpufreq/kirkwood-cpufreq.c:127:2-8: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 118, but without a corresponding object release within this function.
./drivers/cpufreq/kirkwood-cpufreq.c:133:2-8: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 118, but without a corresponding object release within this function.

and also do some cleanup:
- of_node_put(np);
- np = NULL;
...
of_node_put(np);

Signed-off-by: Wen Yang <wen.yang99@zte.com.cn>
Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>
Cc: Viresh Kumar <viresh.kumar@linaro.org>
Cc: linux-pm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
---
 drivers/cpufreq/kirkwood-cpufreq.c | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

diff --git a/drivers/cpufreq/kirkwood-cpufreq.c b/drivers/cpufreq/kirkwood-cpufreq.c
index c2dd43f..8d63a6dc 100644
--- a/drivers/cpufreq/kirkwood-cpufreq.c
+++ b/drivers/cpufreq/kirkwood-cpufreq.c
@@ -124,13 +124,14 @@ static int kirkwood_cpufreq_probe(struct platform_device *pdev)
 	priv.cpu_clk = of_clk_get_by_name(np, "cpu_clk");
 	if (IS_ERR(priv.cpu_clk)) {
 		dev_err(priv.dev, "Unable to get cpuclk\n");
-		return PTR_ERR(priv.cpu_clk);
+		err = PTR_ERR(priv.cpu_clk);
+		goto out_node;
 	}
 
 	err = clk_prepare_enable(priv.cpu_clk);
 	if (err) {
 		dev_err(priv.dev, "Unable to prepare cpuclk\n");
-		return err;
+		goto out_node;
 	}
 
 	kirkwood_freq_table[0].frequency = clk_get_rate(priv.cpu_clk) / 1000;
@@ -161,20 +162,22 @@ static int kirkwood_cpufreq_probe(struct platform_device *pdev)
 		goto out_ddr;
 	}
 
-	of_node_put(np);
-	np = NULL;
-
 	err = cpufreq_register_driver(&kirkwood_cpufreq_driver);
-	if (!err)
-		return 0;
+	if (err) {
+		dev_err(priv.dev, "Failed to register cpufreq driver\n");
+		goto out_powersave;
+	}
 
-	dev_err(priv.dev, "Failed to register cpufreq driver\n");
+	of_node_put(np);
+	return 0;
 
+out_powersave:
 	clk_disable_unprepare(priv.powersave_clk);
 out_ddr:
 	clk_disable_unprepare(priv.ddr_clk);
 out_cpu:
 	clk_disable_unprepare(priv.cpu_clk);
+out_node:
 	of_node_put(np);
 
 	return err;
-- 
2.9.5


  parent reply	other threads:[~2019-04-01  1:38 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-01  1:37 [PATCH 0/7] fix possible object reference leaks in cpufreq Wen Yang
2019-04-01  1:37 ` [PATCH 1/7] cpufreq: ap806: fix possible object reference leak Wen Yang
2019-04-02 13:54   ` [1/7] cpufreq: ap806: Checking implementation of armada_8k_cpufreq_init() Markus Elfring
2019-04-02 13:54   ` Markus Elfring
2019-04-08 10:21   ` [PATCH 1/7] cpufreq: ap806: fix possible object reference leak Viresh Kumar
2019-04-01  1:37 ` [PATCH 2/7] cpufreq: imx6q: " Wen Yang
2019-04-01  1:37 ` Wen Yang [this message]
2019-04-03 13:17   ` [3/7] cpufreq: kirkwood: " Markus Elfring
2019-04-01  1:37 ` [PATCH 4/7] cpufreq: maple: " Wen Yang
2019-04-03 13:50   ` [4/7] cpufreq: maple: Checking implementation of maple_cpufreq_init() Markus Elfring
2019-04-01  1:37 ` [PATCH 5/7] cpufreq/pasemi: fix possible object reference leak Wen Yang
2019-04-03 14:23   ` [5/7] cpufreq/pasemi: Checking implementation of pas_cpufreq_cpu_init() Markus Elfring
2019-04-03 15:31     ` Dan Carpenter
2019-04-01  1:37 ` [PATCH 6/7] cpufreq: pmac32: fix possible object reference leak Wen Yang
2019-04-01  1:37 ` [PATCH 7/7] cpufreq: ppc_cbe: " Wen Yang
2019-04-02 10:43   ` Markus Elfring
2019-04-02 10:50     ` Julia Lawall
2019-04-02 12:50   ` Markus Elfring
2019-04-02 13:15     ` Julia Lawall

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1554082674-2049-4-git-send-email-wen.yang99@zte.com.cn \
    --to=wen.yang99@zte.com.cn \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=rjw@rjwysocki.net \
    --cc=viresh.kumar@linaro.org \
    --cc=wang.yi59@zte.com.cn \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®