Message ID | 1547369264-24831-4-git-send-email-Julia.Lawall@lip6.fr (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | add missing of_node_puts | expand |
Am Sonntag, 13. Januar 2019, 09:47:43 CET schrieb Julia Lawall: > The device node iterators perform an of_node_get on each iteration, so a > jump 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; > iterator name for_each_child_of_node; > @@ > > for_each_child_of_node(root, child) { > ... when != of_node_put(child) > when != e = child > + of_node_put(child); > ? break; > ... > } > ... when != child > // </smpl> > > Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr> I've added a fixes+stable tag and applied it to drm-misc-fixes Thanks for catching that Heiko
On Sun, Jan 13, 2019 at 07:48:49PM +0100, Heiko Stuebner wrote: > Am Sonntag, 13. Januar 2019, 09:47:43 CET schrieb Julia Lawall: > > The device node iterators perform an of_node_get on each iteration, so a > > jump 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; > > iterator name for_each_child_of_node; > > @@ > > > > for_each_child_of_node(root, child) { > > ... when != of_node_put(child) > > when != e = child > > + of_node_put(child); > > ? break; > > ... > > } > > ... when != child > > // </smpl> > > > > Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr> > > I've added a fixes+stable tag and applied it to drm-misc-fixes All of them or just this one here? These cleanup patches have a high chance of falling through cracks, so taking them all usually works out better ... -Daniel > > Thanks for catching that > Heiko > >
Am Montag, 14. Januar 2019, 11:05:56 CET schrieb Daniel Vetter: > On Sun, Jan 13, 2019 at 07:48:49PM +0100, Heiko Stuebner wrote: > > Am Sonntag, 13. Januar 2019, 09:47:43 CET schrieb Julia Lawall: > > > The device node iterators perform an of_node_get on each iteration, so a > > > jump 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; > > > iterator name for_each_child_of_node; > > > @@ > > > > > > for_each_child_of_node(root, child) { > > > ... when != of_node_put(child) > > > when != e = child > > > + of_node_put(child); > > > ? break; > > > ... > > > } > > > ... when != child > > > // </smpl> > > > > > > Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr> > > > > I've added a fixes+stable tag and applied it to drm-misc-fixes > > All of them or just this one here? These cleanup patches have a high > chance of falling through cracks, so taking them all usually works out > better ... That is the only one I got, so right now I only applied this one in my inbox. Weekend and such resulted in me not going looking for other ones. Heiko
diff --git a/drivers/gpu/drm/rockchip/rockchip_rgb.c b/drivers/gpu/drm/rockchip/rockchip_rgb.c index 96ac145..37f9302 100644 --- a/drivers/gpu/drm/rockchip/rockchip_rgb.c +++ b/drivers/gpu/drm/rockchip/rockchip_rgb.c @@ -113,8 +113,10 @@ struct rockchip_rgb *rockchip_rgb_init(struct device *dev, child_count++; ret = drm_of_find_panel_or_bridge(dev->of_node, 0, endpoint_id, &panel, &bridge); - if (!ret) + if (!ret) { + of_node_put(endpoint); break; + } } of_node_put(port);
The device node iterators perform an of_node_get on each iteration, so a jump 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; iterator name for_each_child_of_node; @@ for_each_child_of_node(root, child) { ... when != of_node_put(child) when != e = child + of_node_put(child); ? break; ... } ... when != child // </smpl> Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr> --- drivers/gpu/drm/rockchip/rockchip_rgb.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)