lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-ID: <CAJKOXPc7b4H8qFLRLR2jecA74BPJ-SNfY-GtfTVf=mfzrEeCtw@mail.gmail.com> Date: Mon, 12 Oct 2015 09:33:59 +0900 From: Krzysztof Kozlowski <k.kozlowski@...sung.com> To: Julia Lawall <Julia.Lawall@...6.fr> Cc: Liam Girdwood <lgirdwood@...il.com>, kernel-janitors@...r.kernel.org, Mark Brown <broonie@...nel.org>, linux-kernel@...r.kernel.org, Russell King - ARM Linux <linux@....linux.org.uk>, Thomas Petazzoni <thomas.petazzoni@...e-electrons.com>, Andrew Lunn <andrew@...n.ch>, Bjorn Helgaas <bhelgaas@...gle.com>, Jason Cooper <jason@...edaemon.net> Subject: Re: [PATCH 4/5] regulator: of: add missing of_node_put 2015-10-10 21:30 GMT+09:00 Julia Lawall <Julia.Lawall@...6.fr>: > > for_each_child_of_node performs an of_node_get on each iteration, so > a break out of the loop requires an of_node_put. > > The semantic patch that fixes this problem is as follows > (http://coccinelle.lip6.fr): > > // <smpl> > @@ > expression root,e; > local idexpression child; > @@ > > for_each_child_of_node(root, child) { > ... when != of_node_put(child) > when != e = child > ( > return child; > | > + of_node_put(child); > ? return ...; > ) > ... > } > // </smpl> > > Signed-off-by: Julia Lawall <Julia.Lawall@...6.fr> > > --- > drivers/regulator/of_regulator.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/regulator/of_regulator.c b/drivers/regulator/of_regulator.c > index 499e437..f9d77b4 100644 > --- a/drivers/regulator/of_regulator.c > +++ b/drivers/regulator/of_regulator.c > @@ -274,6 +274,7 @@ int of_regulator_match(struct device *dev, struct device_node *node, > dev_err(dev, > "failed to parse DT for regulator %s\n", > child->name); > + of_node_put(child); This looks good. > return -EINVAL; > } > match->of_node = of_node_get(child); But what about 'break' few lines below? The reference from last of_get_next_child() should be also dropped because... or we should remove this of_node_get() call. How about fixing also usage of for_each_available_child_of_node() in regulator_of_get_init_data()? Best regards, Krzysztof -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists