From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6F494C433FE for ; Mon, 3 Jan 2022 14:49:23 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233385AbiACOtW (ORCPT ); Mon, 3 Jan 2022 09:49:22 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44504 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232984AbiACOtW (ORCPT ); Mon, 3 Jan 2022 09:49:22 -0500 Received: from mail-vk1-xa29.google.com (mail-vk1-xa29.google.com [IPv6:2607:f8b0:4864:20::a29]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DBD10C061792 for ; Mon, 3 Jan 2022 06:49:21 -0800 (PST) Received: by mail-vk1-xa29.google.com with SMTP id l68so2863319vkh.4 for ; Mon, 03 Jan 2022 06:49:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=HWc6kMGP/M+msoEBTnVD+/VQ6/IgWEBExdaLxDbpI5U=; b=g7BmJBPMjxPW+Ba565Ck5u6y91erR7ajoBfz1K+6UZzNMaTYgdU3/604VSjUrNipbO 9EAkF9uG2AZh4L737doHouNA2ZGiF88vxfu0M1/PZMQ2bH6ujlfo+wVjh/vVlY2PA2P1 I6YMP2/a4KlaBTvUqZWYA8RCZXqekivT4NkoTh9BrghF5zKxG27tnCLddGi6P+dZln4m Hf1ka8DNBu2YiXHgP46BFlyKsFVeS9AKoAp1/B0vmLm3SiWV6tyJ7gaXIHh9fbYIpKGj aJGJTtWNCJHn94Xd1IU91DBVrN955TTJE8d3oSGqxqFfGk07/RFKlqZxLa2w9b8ar1k1 6Y1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=HWc6kMGP/M+msoEBTnVD+/VQ6/IgWEBExdaLxDbpI5U=; b=iJVzoP+b7b1wALIzo+0S15F5IGr3t3HLZnhi/k0j5hWdZ2m+oZ92zp1dBj53OWPs7G T076usEV9C209yLc3QTkfLkimzeqzHl3nN1NEQ1Fs6h7VwuHQ9zaQJqCrhiX2O4BSv1d tgZAiXOddq2vbJ9hcun/BkLGQmati5D6K+GegXS2Hh5Q/yrNtxPfCnimPerM7B19NTtt /mdb/YwbFfWUi87jJDlMgC4KpWN14yWTMFXSEV4ODscNMeElg+f5FbxbVGZJm+h4ZpcM 8kqLoQpA3eGbuKtQ9bzS2MRK6VqEkFFHOF5P4buRhWvaKeHWis1MfrCQ8OpJASYR1sHH 011g== X-Gm-Message-State: AOAM5322SQpDr0mnaO8m0AK90xY99CIF+esZhDj3U8y53ga2moGw+rHc cbXkVGesYUOSR9FxUPckRWQHgv78uIW2IG5pGbHPgQ== X-Google-Smtp-Source: ABdhPJwwIA/IfQvilN4fRR9XaYaLNL5dYfW/SyPMBHLI4fmxOM14YyT+pKiuH/zq7OrOqH4hy71kD0yP359HgsUko0g= X-Received: by 2002:ac5:cb72:: with SMTP id l18mr15057905vkn.1.1641221361003; Mon, 03 Jan 2022 06:49:21 -0800 (PST) MIME-Version: 1.0 References: <20211231161930.256733-1-krzysztof.kozlowski@canonical.com> <20211231161930.256733-2-krzysztof.kozlowski@canonical.com> In-Reply-To: <20211231161930.256733-2-krzysztof.kozlowski@canonical.com> From: Sam Protsenko Date: Mon, 3 Jan 2022 16:49:08 +0200 Message-ID: Subject: Re: [PATCH 01/24] pinctrl: samsung: drop pin banks references on error paths To: Krzysztof Kozlowski Cc: Tomasz Figa , Sylwester Nawrocki , Linus Walleij , Rob Herring , linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Marek Szyprowski , Sylwester Nawrocki , Chanho Park , stable@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org On Fri, 31 Dec 2021 at 18:20, Krzysztof Kozlowski wrote: > > The driver iterates over its devicetree children with > for_each_child_of_node() and stores for later found node pointer. This > has to be put in error paths to avoid leak during re-probing. > > Fixes: ab663789d697 ("pinctrl: samsung: Match pin banks with their device nodes") > Cc: > Signed-off-by: Krzysztof Kozlowski > --- > drivers/pinctrl/samsung/pinctrl-samsung.c | 29 +++++++++++++++++------ > 1 file changed, 22 insertions(+), 7 deletions(-) > > diff --git a/drivers/pinctrl/samsung/pinctrl-samsung.c b/drivers/pinctrl/samsung/pinctrl-samsung.c > index 8941f658e7f1..f2864a7869b3 100644 > --- a/drivers/pinctrl/samsung/pinctrl-samsung.c > +++ b/drivers/pinctrl/samsung/pinctrl-samsung.c > @@ -1002,6 +1002,15 @@ samsung_pinctrl_get_soc_data_for_of_alias(struct platform_device *pdev) > return &(of_data->ctrl[id]); > } > > +static void samsung_banks_of_node_put(struct samsung_pinctrl_drv_data *d) > +{ > + struct samsung_pin_bank *bank; > + unsigned int i; > + > + for (i = 0; i < d->nr_banks; ++i, ++bank) > + of_node_put(bank->of_node); But "bank" variable wasn't actually assigned before, only declared? > +} > + > /* retrieve the soc specific data */ > static const struct samsung_pin_ctrl * > samsung_pinctrl_get_soc_data(struct samsung_pinctrl_drv_data *d, > @@ -1116,19 +1125,19 @@ static int samsung_pinctrl_probe(struct platform_device *pdev) > if (ctrl->retention_data) { > drvdata->retention_ctrl = ctrl->retention_data->init(drvdata, > ctrl->retention_data); > - if (IS_ERR(drvdata->retention_ctrl)) > - return PTR_ERR(drvdata->retention_ctrl); > + if (IS_ERR(drvdata->retention_ctrl)) { > + ret = PTR_ERR(drvdata->retention_ctrl); > + goto err_put_banks; > + } > } > > ret = samsung_pinctrl_register(pdev, drvdata); > if (ret) > - return ret; > + goto err_put_banks; > > ret = samsung_gpiolib_register(pdev, drvdata); > - if (ret) { > - samsung_pinctrl_unregister(pdev, drvdata); > - return ret; > - } > + if (ret) > + goto err_unregister; > > if (ctrl->eint_gpio_init) > ctrl->eint_gpio_init(drvdata); > @@ -1138,6 +1147,12 @@ static int samsung_pinctrl_probe(struct platform_device *pdev) > platform_set_drvdata(pdev, drvdata); > > return 0; > + > +err_unregister: > + samsung_pinctrl_unregister(pdev, drvdata); > +err_put_banks: > + samsung_banks_of_node_put(drvdata); > + return ret; > } > > /* > -- > 2.32.0 > From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id B8C50C433F5 for ; Mon, 3 Jan 2022 14:50:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:Subject:Message-ID:Date:From: In-Reply-To:References:MIME-Version:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=Rlu8Ste8ot22vzUVjY65rxHFT2ncxszpVq8HzdyRWN0=; b=W0YkiR/cg5gJwe qQbW02io7Z+GyytKit8EPfdlAM8vNr3n5wd7v1m8NaXwCob0pRTFtdHStG/bwqj1ESr5+oO0VqeCv /leOMasn9Wiij76JGUZlRgeEC0CTl4rZrOZrQ/PwNHSoLC418dz5Ju3F2W8x8C1PI26mTXIGGVMpW uH3jydveXe50c7YWBbOE0tR1wk7WclRLh5l1C84cBnbHC1JFqU5hOxWkZjR3yriYBq6o58eW65BLX x45b5fiSttEoZ2aUl9084M86oVd2oc2qQYj5baATTeTXY3UXSywlOCY58yWgTUaRoeXJecjyR3e8E NnE0v7laWjRl64oTiKoA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1n4OeL-009EvB-UD; Mon, 03 Jan 2022 14:49:26 +0000 Received: from mail-vk1-xa31.google.com ([2607:f8b0:4864:20::a31]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1n4OeI-009EuX-8t for linux-arm-kernel@lists.infradead.org; Mon, 03 Jan 2022 14:49:23 +0000 Received: by mail-vk1-xa31.google.com with SMTP id l68so2863321vkh.4 for ; Mon, 03 Jan 2022 06:49:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=HWc6kMGP/M+msoEBTnVD+/VQ6/IgWEBExdaLxDbpI5U=; b=g7BmJBPMjxPW+Ba565Ck5u6y91erR7ajoBfz1K+6UZzNMaTYgdU3/604VSjUrNipbO 9EAkF9uG2AZh4L737doHouNA2ZGiF88vxfu0M1/PZMQ2bH6ujlfo+wVjh/vVlY2PA2P1 I6YMP2/a4KlaBTvUqZWYA8RCZXqekivT4NkoTh9BrghF5zKxG27tnCLddGi6P+dZln4m Hf1ka8DNBu2YiXHgP46BFlyKsFVeS9AKoAp1/B0vmLm3SiWV6tyJ7gaXIHh9fbYIpKGj aJGJTtWNCJHn94Xd1IU91DBVrN955TTJE8d3oSGqxqFfGk07/RFKlqZxLa2w9b8ar1k1 6Y1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=HWc6kMGP/M+msoEBTnVD+/VQ6/IgWEBExdaLxDbpI5U=; b=qpU9QHaxOFPMVVcZiBZmZH8TcZ/nqrmtQ8L6ozU+DlBlm5pdxLV3tEWThxZuhU9zh7 k8RoJ63aCyRvPPX/EtwXRChk7jz9+avYLHnimTcGj+4NKyNe2tzEIhDZsh6zdXcSwAkj 4CtIMnhPplUaUmJ+1U7CHUitT4XmK5pG6UwhiEdmvdxViPr7FtrgGBRmoYOIU7z+ZWV6 blJED4QDCkllqsI/D9T8vVmVVyZS+h3RPKX+9+u0ZRgUP98J0GLroXH/HxLBXnNpTL2r 08y9khpTz/rhguL+yW0Otvs/TMYPbOXqc4moOQKzcgPHCXS4jGYpyUOASRdlcTzmK0RY AsLA== X-Gm-Message-State: AOAM5308uwizOY9N70TmQxxvpszzaOeI/9iiI7JHzZ4gd2jkyJey2JCW f18CI9Opdz5wTgXWp73iTsql048IXjDHZwAS3t3ToQ== X-Google-Smtp-Source: ABdhPJwwIA/IfQvilN4fRR9XaYaLNL5dYfW/SyPMBHLI4fmxOM14YyT+pKiuH/zq7OrOqH4hy71kD0yP359HgsUko0g= X-Received: by 2002:ac5:cb72:: with SMTP id l18mr15057905vkn.1.1641221361003; Mon, 03 Jan 2022 06:49:21 -0800 (PST) MIME-Version: 1.0 References: <20211231161930.256733-1-krzysztof.kozlowski@canonical.com> <20211231161930.256733-2-krzysztof.kozlowski@canonical.com> In-Reply-To: <20211231161930.256733-2-krzysztof.kozlowski@canonical.com> From: Sam Protsenko Date: Mon, 3 Jan 2022 16:49:08 +0200 Message-ID: Subject: Re: [PATCH 01/24] pinctrl: samsung: drop pin banks references on error paths To: Krzysztof Kozlowski Cc: Tomasz Figa , Sylwester Nawrocki , Linus Walleij , Rob Herring , linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Marek Szyprowski , Sylwester Nawrocki , Chanho Park , stable@vger.kernel.org X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220103_064922_367438_1E77D00C X-CRM114-Status: GOOD ( 22.92 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On Fri, 31 Dec 2021 at 18:20, Krzysztof Kozlowski wrote: > > The driver iterates over its devicetree children with > for_each_child_of_node() and stores for later found node pointer. This > has to be put in error paths to avoid leak during re-probing. > > Fixes: ab663789d697 ("pinctrl: samsung: Match pin banks with their device nodes") > Cc: > Signed-off-by: Krzysztof Kozlowski > --- > drivers/pinctrl/samsung/pinctrl-samsung.c | 29 +++++++++++++++++------ > 1 file changed, 22 insertions(+), 7 deletions(-) > > diff --git a/drivers/pinctrl/samsung/pinctrl-samsung.c b/drivers/pinctrl/samsung/pinctrl-samsung.c > index 8941f658e7f1..f2864a7869b3 100644 > --- a/drivers/pinctrl/samsung/pinctrl-samsung.c > +++ b/drivers/pinctrl/samsung/pinctrl-samsung.c > @@ -1002,6 +1002,15 @@ samsung_pinctrl_get_soc_data_for_of_alias(struct platform_device *pdev) > return &(of_data->ctrl[id]); > } > > +static void samsung_banks_of_node_put(struct samsung_pinctrl_drv_data *d) > +{ > + struct samsung_pin_bank *bank; > + unsigned int i; > + > + for (i = 0; i < d->nr_banks; ++i, ++bank) > + of_node_put(bank->of_node); But "bank" variable wasn't actually assigned before, only declared? > +} > + > /* retrieve the soc specific data */ > static const struct samsung_pin_ctrl * > samsung_pinctrl_get_soc_data(struct samsung_pinctrl_drv_data *d, > @@ -1116,19 +1125,19 @@ static int samsung_pinctrl_probe(struct platform_device *pdev) > if (ctrl->retention_data) { > drvdata->retention_ctrl = ctrl->retention_data->init(drvdata, > ctrl->retention_data); > - if (IS_ERR(drvdata->retention_ctrl)) > - return PTR_ERR(drvdata->retention_ctrl); > + if (IS_ERR(drvdata->retention_ctrl)) { > + ret = PTR_ERR(drvdata->retention_ctrl); > + goto err_put_banks; > + } > } > > ret = samsung_pinctrl_register(pdev, drvdata); > if (ret) > - return ret; > + goto err_put_banks; > > ret = samsung_gpiolib_register(pdev, drvdata); > - if (ret) { > - samsung_pinctrl_unregister(pdev, drvdata); > - return ret; > - } > + if (ret) > + goto err_unregister; > > if (ctrl->eint_gpio_init) > ctrl->eint_gpio_init(drvdata); > @@ -1138,6 +1147,12 @@ static int samsung_pinctrl_probe(struct platform_device *pdev) > platform_set_drvdata(pdev, drvdata); > > return 0; > + > +err_unregister: > + samsung_pinctrl_unregister(pdev, drvdata); > +err_put_banks: > + samsung_banks_of_node_put(drvdata); > + return ret; > } > > /* > -- > 2.32.0 > _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel