[v4.4] PM / OPP: Add missing of_node_put(np)

Message ID 3b71eca9ceb96a3525f4bb08bd1225536d691638.1511851763.git.viresh.kumar@linaro.org
State New
Headers show
Series
  • [v4.4] PM / OPP: Add missing of_node_put(np)
Related show

Commit Message

Viresh Kumar Nov. 28, 2017, 6:50 a.m.
From: Tobias Jordan <Tobias.Jordan@elektrobit.com>


commit 7978db344719dab1e56d05e6fc04aaaddcde0a5e upstream.

The for_each_available_child_of_node() loop in _of_add_opp_table_v2()
doesn't drop the reference to "np" on errors. Fix that.

Fixes: 274659029c9d (PM / OPP: Add support to parse "operating-points-v2" bindings)
Cc: 4.4 <stable@vger.kernel.org> # 4.4
Signed-off-by: Tobias Jordan <Tobias.Jordan@elektrobit.com>

[ VK: Improved commit log. ]
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>

Reviewed-by: Stephen Boyd <sboyd@codeaurora.org>

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

---
 drivers/base/power/opp/core.c | 1 +
 1 file changed, 1 insertion(+)

-- 
2.15.0.194.g9af6a3dea062

Comments

Greg KH Nov. 28, 2017, 8:43 a.m. | #1
On Tue, Nov 28, 2017 at 12:20:41PM +0530, Viresh Kumar wrote:
> From: Tobias Jordan <Tobias.Jordan@elektrobit.com>

> 

> commit 7978db344719dab1e56d05e6fc04aaaddcde0a5e upstream.

> 

> The for_each_available_child_of_node() loop in _of_add_opp_table_v2()

> doesn't drop the reference to "np" on errors. Fix that.

> 

> Fixes: 274659029c9d (PM / OPP: Add support to parse "operating-points-v2" bindings)

> Cc: 4.4 <stable@vger.kernel.org> # 4.4

> Signed-off-by: Tobias Jordan <Tobias.Jordan@elektrobit.com>

> [ VK: Improved commit log. ]

> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>

> Reviewed-by: Stephen Boyd <sboyd@codeaurora.org>

> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

> ---

>  drivers/base/power/opp/core.c | 1 +

>  1 file changed, 1 insertion(+)

> 

> diff --git a/drivers/base/power/opp/core.c b/drivers/base/power/opp/core.c

> index b8e76f75073b..0b4190a1efaa 100644

> --- a/drivers/base/power/opp/core.c

> +++ b/drivers/base/power/opp/core.c

> @@ -1199,6 +1199,7 @@ static int _of_add_opp_table_v2(struct device *dev, struct device_node *opp_np)

>  		if (ret) {

>  			dev_err(dev, "%s: Failed to add OPP, %d\n", __func__,

>  				ret);

> ++			of_node_put(np);


I don't think you test-built this patch :(
Viresh Kumar Nov. 28, 2017, 9:21 a.m. | #2
On 28-11-17, 09:43, Greg KH wrote:
> On Tue, Nov 28, 2017 at 12:20:41PM +0530, Viresh Kumar wrote:

> > From: Tobias Jordan <Tobias.Jordan@elektrobit.com>

> > 

> > commit 7978db344719dab1e56d05e6fc04aaaddcde0a5e upstream.

> > 

> > The for_each_available_child_of_node() loop in _of_add_opp_table_v2()

> > doesn't drop the reference to "np" on errors. Fix that.

> > 

> > Fixes: 274659029c9d (PM / OPP: Add support to parse "operating-points-v2" bindings)

> > Cc: 4.4 <stable@vger.kernel.org> # 4.4

> > Signed-off-by: Tobias Jordan <Tobias.Jordan@elektrobit.com>

> > [ VK: Improved commit log. ]

> > Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>

> > Reviewed-by: Stephen Boyd <sboyd@codeaurora.org>

> > Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

> > ---

> >  drivers/base/power/opp/core.c | 1 +

> >  1 file changed, 1 insertion(+)

> > 

> > diff --git a/drivers/base/power/opp/core.c b/drivers/base/power/opp/core.c

> > index b8e76f75073b..0b4190a1efaa 100644

> > --- a/drivers/base/power/opp/core.c

> > +++ b/drivers/base/power/opp/core.c

> > @@ -1199,6 +1199,7 @@ static int _of_add_opp_table_v2(struct device *dev, struct device_node *opp_np)

> >  		if (ret) {

> >  			dev_err(dev, "%s: Failed to add OPP, %d\n", __func__,

> >  				ret);

> > ++			of_node_put(np);

> 

> I don't think you test-built this patch :(


I actually compile tested the 4.9 patch and found the function to be
exactly same in 4.4 branch and skipped it being lazy. And the laziness
always proves that it was a bad decision to skip compiling it :(

Sorry for the ++ crap (It took me several minutes to see how your
committed change is different from what I have sent) :(

-- 
viresh

Patch

diff --git a/drivers/base/power/opp/core.c b/drivers/base/power/opp/core.c
index b8e76f75073b..0b4190a1efaa 100644
--- a/drivers/base/power/opp/core.c
+++ b/drivers/base/power/opp/core.c
@@ -1199,6 +1199,7 @@  static int _of_add_opp_table_v2(struct device *dev, struct device_node *opp_np)
 		if (ret) {
 			dev_err(dev, "%s: Failed to add OPP, %d\n", __func__,
 				ret);
++			of_node_put(np);
 			goto free_table;
 		}
 	}