linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] regulator: core: Add of_node_put() before return
@ 2019-08-08  7:05 Nishka Dasgupta
  2019-08-08 12:27 ` Mark Brown
  0 siblings, 1 reply; 6+ messages in thread
From: Nishka Dasgupta @ 2019-08-08  7:05 UTC (permalink / raw)
  To: lgirdwood, broonie, linux-kernel; +Cc: Nishka Dasgupta

In function of_get_child_regulator(), the loop for_each_child_of_node()
contains two mid-loop return statements. Ordinarily the loop gets the
node child at the beginning of every iteration and automatically puts
child after the main body has been executed. However in the case of a
mid-loop return child is not put, which may cause a memory leak.
Hence create a new label, err_node_put, that puts child and then returns
the required value; edit the mid-loop return statements to instead go to
this new label.
Issue found with Coccinelle.

Signed-off-by: Nishka Dasgupta <nishkadg.linux@gmail.com>
---
Changes in v2:
- Create a new label to put the node and return regnode.

 drivers/regulator/core.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
index e0c0cf462004..4a27a46ec6e7 100644
--- a/drivers/regulator/core.c
+++ b/drivers/regulator/core.c
@@ -381,12 +381,16 @@ static struct device_node *of_get_child_regulator(struct device_node *parent,
 		if (!regnode) {
 			regnode = of_get_child_regulator(child, prop_name);
 			if (regnode)
-				return regnode;
+				goto err_node_put;
 		} else {
-			return regnode;
+			goto err_node_put;
 		}
 	}
 	return NULL;
+
+err_node_put:
+	of_node_put(child);
+	return regnode;
 }
 
 /**
-- 
2.19.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v2] regulator: core: Add of_node_put() before return
  2019-08-08  7:05 [PATCH v2] regulator: core: Add of_node_put() before return Nishka Dasgupta
@ 2019-08-08 12:27 ` Mark Brown
  2019-08-13  4:27   ` Nishka Dasgupta
  0 siblings, 1 reply; 6+ messages in thread
From: Mark Brown @ 2019-08-08 12:27 UTC (permalink / raw)
  To: Nishka Dasgupta; +Cc: lgirdwood, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 579 bytes --]

On Thu, Aug 08, 2019 at 12:35:53PM +0530, Nishka Dasgupta wrote:
> In function of_get_child_regulator(), the loop for_each_child_of_node()
> contains two mid-loop return statements. Ordinarily the loop gets the
> node child at the beginning of every iteration and automatically puts

Please do not submit new versions of already applied patches, please
submit incremental updates to the existing code.  Modifying existing
commits creates problems for other users building on top of those
commits so it's best practice to only change pubished git commits if
absolutely essential.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2] regulator: core: Add of_node_put() before return
  2019-08-08 12:27 ` Mark Brown
@ 2019-08-13  4:27   ` Nishka Dasgupta
  2019-08-13 11:21     ` Mark Brown
  0 siblings, 1 reply; 6+ messages in thread
From: Nishka Dasgupta @ 2019-08-13  4:27 UTC (permalink / raw)
  To: Mark Brown; +Cc: lgirdwood, linux-kernel

On 08/08/19 5:57 PM, Mark Brown wrote:
> On Thu, Aug 08, 2019 at 12:35:53PM +0530, Nishka Dasgupta wrote:
>> In function of_get_child_regulator(), the loop for_each_child_of_node()
>> contains two mid-loop return statements. Ordinarily the loop gets the
>> node child at the beginning of every iteration and automatically puts
> 
> Please do not submit new versions of already applied patches, please
> submit incremental updates to the existing code.  Modifying existing
> commits creates problems for other users building on top of those
> commits so it's best practice to only change pubished git commits if
> absolutely essential.
> 
I am very sorry about this; I wasn't sure whether this particular commit 
had been applied. Should I split the commit and resend only the change 
to the old commit, or should I leave it as it is?

Thanking you,
Nishka

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2] regulator: core: Add of_node_put() before return
  2019-08-13  4:27   ` Nishka Dasgupta
@ 2019-08-13 11:21     ` Mark Brown
  2019-08-15  5:37       ` [PATCH v2] regulator: core: Add label to collate of_node_put() statements Nishka Dasgupta
  0 siblings, 1 reply; 6+ messages in thread
From: Mark Brown @ 2019-08-13 11:21 UTC (permalink / raw)
  To: Nishka Dasgupta; +Cc: lgirdwood, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 707 bytes --]

On Tue, Aug 13, 2019 at 09:57:47AM +0530, Nishka Dasgupta wrote:
> On 08/08/19 5:57 PM, Mark Brown wrote:

> > Please do not submit new versions of already applied patches, please
> > submit incremental updates to the existing code.  Modifying existing
> > commits creates problems for other users building on top of those
> > commits so it's best practice to only change pubished git commits if
> > absolutely essential.

> I am very sorry about this; I wasn't sure whether this particular commit had
> been applied. Should I split the commit and resend only the change to the
> old commit, or should I leave it as it is?

If there's any changes you think are a good idea please send a new patch
for them.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v2] regulator: core: Add label to collate of_node_put() statements
  2019-08-13 11:21     ` Mark Brown
@ 2019-08-15  5:37       ` Nishka Dasgupta
  2019-08-15 17:14         ` Applied "regulator: core: Add label to collate of_node_put() statements" to the regulator tree Mark Brown
  0 siblings, 1 reply; 6+ messages in thread
From: Nishka Dasgupta @ 2019-08-15  5:37 UTC (permalink / raw)
  To: lgirdwood, broonie, linux-kernel; +Cc: Nishka Dasgupta

In function of_get_child_regulator(), the loop for_each_child_of_node()
contains two mid-loop return statements, each preceded by a statement
putting child. In order to reduce this repetition, create a new label,
err_node_put, that puts child and then returns the required value;
edit the mid-loop return blocks to instead go to this new label.

Signed-off-by: Nishka Dasgupta <nishkadg.linux@gmail.com>
---
Changes in v2:
- Submit this as a separate patch instead of updating a previous patch.

 drivers/regulator/core.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
index 7a5d52948703..4a27a46ec6e7 100644
--- a/drivers/regulator/core.c
+++ b/drivers/regulator/core.c
@@ -380,16 +380,17 @@ static struct device_node *of_get_child_regulator(struct device_node *parent,
 
 		if (!regnode) {
 			regnode = of_get_child_regulator(child, prop_name);
-			if (regnode) {
-				of_node_put(child);
-				return regnode;
-			}
+			if (regnode)
+				goto err_node_put;
 		} else {
-			of_node_put(child);
-			return regnode;
+			goto err_node_put;
 		}
 	}
 	return NULL;
+
+err_node_put:
+	of_node_put(child);
+	return regnode;
 }
 
 /**
-- 
2.19.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Applied "regulator: core: Add label to collate of_node_put() statements" to the regulator tree
  2019-08-15  5:37       ` [PATCH v2] regulator: core: Add label to collate of_node_put() statements Nishka Dasgupta
@ 2019-08-15 17:14         ` Mark Brown
  0 siblings, 0 replies; 6+ messages in thread
From: Mark Brown @ 2019-08-15 17:14 UTC (permalink / raw)
  To: Nishka Dasgupta; +Cc: broonie, lgirdwood, linux-kernel, Mark Brown

The patch

   regulator: core: Add label to collate of_node_put() statements

has been applied to the regulator tree at

   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator.git for-5.4

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.  

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

Thanks,
Mark

From 81eeb0a35c2e40bcaf122c6aae3be4f7d9abe201 Mon Sep 17 00:00:00 2001
From: Nishka Dasgupta <nishkadg.linux@gmail.com>
Date: Thu, 15 Aug 2019 11:07:04 +0530
Subject: [PATCH] regulator: core: Add label to collate of_node_put()
 statements

In function of_get_child_regulator(), the loop for_each_child_of_node()
contains two mid-loop return statements, each preceded by a statement
putting child. In order to reduce this repetition, create a new label,
err_node_put, that puts child and then returns the required value;
edit the mid-loop return blocks to instead go to this new label.

Signed-off-by: Nishka Dasgupta <nishkadg.linux@gmail.com>
Link: https://lore.kernel.org/r/20190815053704.32156-1-nishkadg.linux@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
---
 drivers/regulator/core.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
index 7a5d52948703..4a27a46ec6e7 100644
--- a/drivers/regulator/core.c
+++ b/drivers/regulator/core.c
@@ -380,16 +380,17 @@ static struct device_node *of_get_child_regulator(struct device_node *parent,
 
 		if (!regnode) {
 			regnode = of_get_child_regulator(child, prop_name);
-			if (regnode) {
-				of_node_put(child);
-				return regnode;
-			}
+			if (regnode)
+				goto err_node_put;
 		} else {
-			of_node_put(child);
-			return regnode;
+			goto err_node_put;
 		}
 	}
 	return NULL;
+
+err_node_put:
+	of_node_put(child);
+	return regnode;
 }
 
 /**
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2019-08-15 17:14 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-08  7:05 [PATCH v2] regulator: core: Add of_node_put() before return Nishka Dasgupta
2019-08-08 12:27 ` Mark Brown
2019-08-13  4:27   ` Nishka Dasgupta
2019-08-13 11:21     ` Mark Brown
2019-08-15  5:37       ` [PATCH v2] regulator: core: Add label to collate of_node_put() statements Nishka Dasgupta
2019-08-15 17:14         ` Applied "regulator: core: Add label to collate of_node_put() statements" to the regulator tree Mark Brown

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).