From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752699AbbJZBUh (ORCPT ); Sun, 25 Oct 2015 21:20:37 -0400 Received: from galahad.ideasonboard.com ([185.26.127.97]:51205 "EHLO galahad.ideasonboard.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752594AbbJZBUf (ORCPT ); Sun, 25 Oct 2015 21:20:35 -0400 From: Laurent Pinchart To: Julia Lawall Cc: Hyun Kwon , kernel-janitors@vger.kernel.org, Mauro Carvalho Chehab , Michal Simek , =?ISO-8859-1?Q?S=F6ren?= Brinkmann , linux-media@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Russell King - ARM Linux , Thomas Petazzoni , Andrew Lunn , Bjorn Helgaas , Jason Cooper Subject: Re: [PATCH 5/8] [media] v4l: xilinx-vipp: add missing of_node_put Date: Mon, 26 Oct 2015 03:20:36 +0200 Message-ID: <8217156.HJH9oYGKMG@avalon> User-Agent: KMail/4.14.8 (Linux/4.0.5-gentoo; KDE/4.14.8; x86_64; ; ) In-Reply-To: <1445781427-7110-6-git-send-email-Julia.Lawall@lip6.fr> References: <1445781427-7110-1-git-send-email-Julia.Lawall@lip6.fr> <1445781427-7110-6-git-send-email-Julia.Lawall@lip6.fr> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Julia, Thank you for the patch. On Sunday 25 October 2015 14:57:04 Julia Lawall wrote: > 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. > > A simplified version of the semantic patch that fixes this problem is as > follows (http://coccinelle.lip6.fr): > > // > @@ > 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 ...; > ) > ... > } > // > > Signed-off-by: Julia Lawall Reviewed-by: Laurent Pinchart > --- > drivers/media/platform/xilinx/xilinx-vipp.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/media/platform/xilinx/xilinx-vipp.c > b/drivers/media/platform/xilinx/xilinx-vipp.c index 7b7cb9c..b9bf24f 100644 > --- a/drivers/media/platform/xilinx/xilinx-vipp.c > +++ b/drivers/media/platform/xilinx/xilinx-vipp.c > @@ -476,8 +476,10 @@ static int xvip_graph_dma_init(struct > xvip_composite_device *xdev) > > for_each_child_of_node(ports, port) { > ret = xvip_graph_dma_init_one(xdev, port); > - if (ret < 0) > + if (ret < 0) { > + of_node_put(port); > return ret; > + } > } > > return 0; -- Regards, Laurent Pinchart