From patchwork Fri Mar 11 12:30:53 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sylwester Nawrocki X-Patchwork-Id: 33437 Received: from mail.tu-berlin.de ([130.149.7.33]) by www.linuxtv.org with esmtp (Exim 4.84) (envelope-from ) id 1aeMDl-0002p7-SA; Fri, 11 Mar 2016 12:31:09 +0000 X-tubIT-Incoming-IP: 209.132.180.67 Received: from vger.kernel.org ([209.132.180.67]) by mail.tu-berlin.de (exim-4.76/mailfrontend-8) with esmtp id 1aeMDj-00042O-kb; Fri, 11 Mar 2016 13:31:09 +0100 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752308AbcCKMbF (ORCPT + 1 other); Fri, 11 Mar 2016 07:31:05 -0500 Received: from mailout3.w1.samsung.com ([210.118.77.13]:24824 "EHLO mailout3.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751975AbcCKMbD (ORCPT ); Fri, 11 Mar 2016 07:31:03 -0500 Received: from eucpsbgm2.samsung.com (unknown [203.254.199.245]) by mailout3.w1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0O3V00C7SK3MFK20@mailout3.w1.samsung.com>; Fri, 11 Mar 2016 12:30:58 +0000 (GMT) X-AuditID: cbfec7f5-f79b16d000005389-d2-56e2ba82164b Received: from eusync3.samsung.com ( [203.254.199.213]) by eucpsbgm2.samsung.com (EUCPMTA) with SMTP id 90.1C.21385.28AB2E65; Fri, 11 Mar 2016 12:30:58 +0000 (GMT) Received: from [106.116.147.32] by eusync3.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0O3V00FPRK3L7R40@eusync3.samsung.com>; Fri, 11 Mar 2016 12:30:58 +0000 (GMT) From: Sylwester Nawrocki Subject: Re: [RFT 1/2] [media] exynos4-is: Add missing endpoint of_node_put on error paths To: Krzysztof Kozlowski References: <1453768906-28979-1-git-send-email-k.kozlowski@samsung.com> Cc: Kyungmin Park , Mauro Carvalho Chehab , Kukjin Kim , linux-media@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, Javier Martinez Canillas Message-id: <56E2BA7D.9050500@samsung.com> Date: Fri, 11 Mar 2016 13:30:53 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.5.1 MIME-version: 1.0 In-reply-to: <1453768906-28979-1-git-send-email-k.kozlowski@samsung.com> Content-type: text/plain; charset=windows-1252 Content-transfer-encoding: 7bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrNLMWRmVeSWpSXmKPExsVy+t/xq7pNux6FGdxYIm7x5u0aJovXLwwt +h+/ZrY42/SG3WLT42usFj0btrJazDi/j8li9bMKBw6PTas62Tw2L6n32NJ/l92jb8sqRo/P m+QCWKO4bFJSczLLUov07RK4Mpo3d7EXXJComHj0PnsD4y6hLkZODgkBE4l5R0+wQdhiEhfu rQeyuTiEBJYySrxcu44FJCEk8JxR4tcjCRCbTcBQovdoHyOILSwQI3H/0nawGhGg+MHd25kg 6t0ldjYvYQEZxCwwj0nizpVHrCAJXgEtidlnPwIlODhYBFQllh0rBwmLCkRIHO7sYocoEZT4 Mfke2ExOAQ+JHX1fwMqZBfQk7l/UAgkzC8hLbF7zlnkCo8AsJB2zEKpmIalawMi8ilE0tTS5 oDgpPddIrzgxt7g0L10vOT93EyMkyL/uYFx6zOoQowAHoxIP74drD8OEWBPLiitzDzFKcDAr ifBqbXkUJsSbklhZlVqUH19UmpNafIhRmoNFSZx35q73IUIC6YklqdmpqQWpRTBZJg5OqQZG rz5vi/53Z+fbXbdedJL3d9SeN4FLsxfsSU5Q8p3buORUiIT1l2q/3pLn2QYOS1qtKvOVL6hN Kzp0/KZTksRvu9LrkzxPuIQ0S7QlfK+sSjewyu+X9xXb3cT4817zO87aFKUHxWetK1k2r67O ajE5knPlY3r9vU3XG+5MiNVld03uU9pmdkSJpTgj0VCLuag4EQALtU2FbgIAAA== Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org X-PMX-Version: 6.0.0.2142326, Antispam-Engine: 2.7.2.2107409, Antispam-Data: 2016.3.11.122415 X-PMX-Spam: Gauge=IIIIIIII, Probability=8%, Report=' MULTIPLE_RCPTS 0.1, HTML_00_01 0.05, HTML_00_10 0.05, BODY_SIZE_3000_3999 0, BODY_SIZE_5000_LESS 0, BODY_SIZE_7000_LESS 0, FROM_SAME_AS_TO_DOMAIN 0, NO_URI_HTTPS 0, REFERENCES 0, SINGLE_URI_IN_BODY 0, URI_ENDS_IN_HTML 0, __ANY_URI 0, __BOUNCE_CHALLENGE_SUBJ 0, __BOUNCE_NDR_SUBJ_EXEMPT 0, __CP_URI_IN_BODY 0, __CT 0, __CTE 0, __CT_TEXT_PLAIN 0, __FORWARDED_MSG 0, __HAS_FROM 0, __HAS_MSGID 0, __HAS_X_MAILING_LIST 0, __IN_REP_TO 0, __MIME_TEXT_ONLY 0, __MIME_VERSION 0, __MOZILLA_MSGID 0, __MOZILLA_USER_AGENT 0, __MULTIPLE_RCPTS_CC_X2 0, __REFERENCES 0, __SANE_MSGID 0, __SINGLE_URI_TEXT 0, __SUBJ_ALPHA_END 0, __SUBJ_ALPHA_NEGATE 0, __TO_MALFORMED_2 0, __TO_SAME_AS_FROM_DOMAIN 0, __URI_IN_BODY 0, __URI_NO_WWW 0, __URI_NS , __URI_WITH_PATH 0, __USER_AGENT 0' On 01/26/2016 01:41 AM, Krzysztof Kozlowski wrote: > In fimc_md_parse_port_node() endpoint node is get with of_get_next_child() > but it is not put on error path. "is get" doesn't sound right to me, how about rephrasing this to: "In fimc_md_parse_port_node() reference count of the endpoint node "is incremented by of_get_next_child() but it is not decremented on error path." > Fixes: 56fa1a6a6a7d ("[media] s5p-fimc: Change the driver directory name to exynos4-is") > Signed-off-by: Krzysztof Kozlowski > --- > Not tested on hardware, only built+static checkers. > --- > drivers/media/platform/exynos4-is/media-dev.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/media/platform/exynos4-is/media-dev.c > b/drivers/media/platform/exynos4-is/media-dev.c > index f3b2dd30ec77..de0977479327 100644 > --- a/drivers/media/platform/exynos4-is/media-dev.c > +++ b/drivers/media/platform/exynos4-is/media-dev.c > @@ -339,8 +339,10 @@ static int fimc_md_parse_port_node(struct fimc_md *fmd, > return 0; > > v4l2_of_parse_endpoint(ep, &endpoint); > - if (WARN_ON(endpoint.base.port == 0) || index >= FIMC_MAX_SENSORS) > + if (WARN_ON(endpoint.base.port == 0) || index >= FIMC_MAX_SENSORS) { > + of_node_put(ep); > return -EINVAL; > + } Thanks for the patch, it looks correct but it doesn't apply cleanly due to patches already in media master branch [1]. Could you refresh this patch and resend? Also I don't quite like multiple calls to of_node_put(), how about doing something like this instead: ---------------------------8<---------------------------------- ---------------------------8<---------------------------------- diff --git a/drivers/media/platform/exynos4-is/media-dev.c b/drivers/media/platform/exynos4-is/media-dev.c index feb521f..663d32e 100644 --- a/drivers/media/platform/exynos4-is/media-dev.c +++ b/drivers/media/platform/exynos4-is/media-dev.c @@ -397,18 +397,19 @@ static int fimc_md_parse_port_node(struct fimc_md *fmd, return 0; ret = v4l2_of_parse_endpoint(ep, &endpoint); - if (ret) { - of_node_put(ep); - return ret; + if (!ret) { + if (WARN_ON(endpoint.base.port == 0) || + index >= FIMC_MAX_SENSORS) { + ret = -EINVAL; + } else { + pd->mux_id = (endpoint.base.port - 1) & 0x1; + rem = of_graph_get_remote_port_parent(ep); + } } - - if (WARN_ON(endpoint.base.port == 0) || index >= FIMC_MAX_SENSORS) - return -EINVAL; - - pd->mux_id = (endpoint.base.port - 1) & 0x1; - - rem = of_graph_get_remote_port_parent(ep); of_node_put(ep); + if (ret < 0) + return ret; + if (rem == NULL) { v4l2_info(&fmd->v4l2_dev, "Remote device at %s not found\n", ep->full_name);