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 3C7B3C433F5 for ; Fri, 14 Jan 2022 16:38:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243450AbiANQiv (ORCPT ); Fri, 14 Jan 2022 11:38:51 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53194 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235179AbiANQiu (ORCPT ); Fri, 14 Jan 2022 11:38:50 -0500 Received: from mail-ua1-x935.google.com (mail-ua1-x935.google.com [IPv6:2607:f8b0:4864:20::935]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 961E6C061401 for ; Fri, 14 Jan 2022 08:38:50 -0800 (PST) Received: by mail-ua1-x935.google.com with SMTP id c36so17785420uae.13 for ; Fri, 14 Jan 2022 08:38:50 -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=kqh5lKYwnkN37kX/95ffH9A9xkW766WBUrIjfUiOtBY=; b=qYb0+aQJEJ0rzV5FWH45IVRX0rF7G6xG4H5zBgLJ5BQ0nYX8VUyDo1exod8NR+G70c uUhCkJ1oPjPsyO7yF5Xh+a2x8aWliDLS7AQahujnGlxHXRypN4/MRZu99b7pyB3Rrg5b eth+QoX5sOzDN8SgD3pxxH44+AK960G12fGA6WBa3UoXqRhf/9TgeD0hNVj1gNnkBMfz 8jGFnRU1nbOK5/NmPWgCO/S977btAOFBJy7GsekugUpkWpQqzt5UUUTnBciNQwSuEFMx 0qS7i4Vl7yHs4iKnthxTpjs3jdN1aJ2cr1k4+UtrielOfEPtCEM9NVxww1fD9eaeyqIj EFhw== 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=kqh5lKYwnkN37kX/95ffH9A9xkW766WBUrIjfUiOtBY=; b=L9i8J8TGDCjhlA/oZdkDCpnLk39pxrhMe0ZdPk3atbBJk1zuoys7A8aXtgUZxhcayK XRCfvXetFwty6D5hfr2luaknEvzhugSDhvhJaBcIc4obsWzHGrkzF8tfhhblWzoR1aIx 6AIkr9zobYWJMBgVn8wftHguqIzLk8gAB6fV1eugxHVgglfyctQlugHD1tFfHIQAwUSN el6WR6SyQWzwf91c69bYFr7JoCZBg6xQtbNdii5j6bFrKogL1nIZrbdblavPqvIurIVM Go+GKcAuuALeljblFpz8Z67V0tpaf2hjNOtJqiT9koG6J/V98DKyZIiMvqhiGTM/v0dL Jfdw== X-Gm-Message-State: AOAM533sscoDfFDiETI4tems/DZn4o7ZkZTS/VncrH9G2mO5XFDL8pJW AWpyD0/wt/Ot64A+fzpZ+/3h8Qe0p55uCPR1uB5Fog== X-Google-Smtp-Source: ABdhPJyAOisMhvKMOns8BJKxp2lPM/5PjFuxHnM4pqpl5scSi2WoU18z/odQ7iI4CCAzffQuqDyyJOPkpKUdMicgwNc= X-Received: by 2002:a05:6102:108c:: with SMTP id s12mr4465397vsr.20.1642178329640; Fri, 14 Jan 2022 08:38:49 -0800 (PST) MIME-Version: 1.0 References: <20220111201426.326777-1-krzysztof.kozlowski@canonical.com> <20220111201426.326777-2-krzysztof.kozlowski@canonical.com> In-Reply-To: <20220111201426.326777-2-krzysztof.kozlowski@canonical.com> From: Sam Protsenko Date: Fri, 14 Jan 2022 18:38:37 +0200 Message-ID: Subject: Re: [PATCH v2 01/28] 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 , Chanho Park , Alim Akhtar , stable@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org On Tue, 11 Jan 2022 at 22:15, 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 > --- Reviewed-by: Sam Protsenko > drivers/pinctrl/samsung/pinctrl-samsung.c | 30 +++++++++++++++++------ > 1 file changed, 23 insertions(+), 7 deletions(-) > > diff --git a/drivers/pinctrl/samsung/pinctrl-samsung.c b/drivers/pinctrl/samsung/pinctrl-samsung.c > index 8941f658e7f1..b19ebc43d886 100644 > --- a/drivers/pinctrl/samsung/pinctrl-samsung.c > +++ b/drivers/pinctrl/samsung/pinctrl-samsung.c > @@ -1002,6 +1002,16 @@ 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; > + > + bank = d->pin_banks; > + for (i = 0; i < d->nr_banks; ++i, ++bank) > + of_node_put(bank->of_node); > +} > + > /* retrieve the soc specific data */ > static const struct samsung_pin_ctrl * > samsung_pinctrl_get_soc_data(struct samsung_pinctrl_drv_data *d, > @@ -1116,19 +1126,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 +1148,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 21148C433EF for ; Fri, 14 Jan 2022 16:40:08 +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=wFqt1jgBAIQ2517TAnRlDT0QQvrtT/AICpUctawFYSg=; b=Lpjt4lcm/c771d uuU9HbanWczziIqjutbOw3dn5rxE6WGwlDKHkJoGH+mOavDErweLXI28v3WqxqJY3faZV4QWuaXiP TCsxsQjPMZu5dYFt68cW1DEvq7UONP/UmhRJa+T37kHLG2q/NJQoHKSNu/3dnd9i9gQaJe37/UwQ+ UY1ge69bWyXsMf1LjB781qfkpDRERTBacocVvRLL8oGopI7k4SMkEt3atecPsbPdybhQgBu+FBLJk kx/a/f1yyhG0GFU6kdH5/+XYYLDzuLCEx0Hsi6yFGLrAonEoqvkDyODRidY3HS4iU/qN/lszzYbM2 wu1I3iLCgJiMUfd2C69Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1n8PbK-009nSX-F0; Fri, 14 Jan 2022 16:38:54 +0000 Received: from mail-ua1-x931.google.com ([2607:f8b0:4864:20::931]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1n8PbH-009nRZ-57 for linux-arm-kernel@lists.infradead.org; Fri, 14 Jan 2022 16:38:52 +0000 Received: by mail-ua1-x931.google.com with SMTP id o1so17887523uap.4 for ; Fri, 14 Jan 2022 08:38:50 -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=kqh5lKYwnkN37kX/95ffH9A9xkW766WBUrIjfUiOtBY=; b=qYb0+aQJEJ0rzV5FWH45IVRX0rF7G6xG4H5zBgLJ5BQ0nYX8VUyDo1exod8NR+G70c uUhCkJ1oPjPsyO7yF5Xh+a2x8aWliDLS7AQahujnGlxHXRypN4/MRZu99b7pyB3Rrg5b eth+QoX5sOzDN8SgD3pxxH44+AK960G12fGA6WBa3UoXqRhf/9TgeD0hNVj1gNnkBMfz 8jGFnRU1nbOK5/NmPWgCO/S977btAOFBJy7GsekugUpkWpQqzt5UUUTnBciNQwSuEFMx 0qS7i4Vl7yHs4iKnthxTpjs3jdN1aJ2cr1k4+UtrielOfEPtCEM9NVxww1fD9eaeyqIj EFhw== 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=kqh5lKYwnkN37kX/95ffH9A9xkW766WBUrIjfUiOtBY=; b=VfivComC2YEXMlBxvyQUQF5j07syyHOVXSmb+5tWPJh9g9URYjlx3/T+a7Q4PjO50L fGIQSO4Ni00BX5yho0SFpouut4H/A/WjBCLkteeiGiMCefqKAb451+x0NsQjoTkTbRo7 7503sT0ppWt2a+11IVMChBUWkdw3MMRmwlirGtvSa5uvA+GKSHYQTq35o4apFpigmDaH 6KLqXKFXQ7SR7SrVKm8eD5Tes7CQh8CPqnR3Li6kG6DwdU/H7Jo5mwcfXza4fj++dYDP rhh1NROlwIICgXl/hg3fsIJYYChSDj7ofNcvOn+DLRw0sITdpyarE4XnYRjbPfw1MyHx za3Q== X-Gm-Message-State: AOAM5304urZe39on9FMMGsKYEbRzdHQxnbZ+kq2a9M6OCOdVFd9Rpe2v S7Po4f3to14kRo5d3X4nWIjg6IJ6wi7PeFH9Fy6GXg== X-Google-Smtp-Source: ABdhPJyAOisMhvKMOns8BJKxp2lPM/5PjFuxHnM4pqpl5scSi2WoU18z/odQ7iI4CCAzffQuqDyyJOPkpKUdMicgwNc= X-Received: by 2002:a05:6102:108c:: with SMTP id s12mr4465397vsr.20.1642178329640; Fri, 14 Jan 2022 08:38:49 -0800 (PST) MIME-Version: 1.0 References: <20220111201426.326777-1-krzysztof.kozlowski@canonical.com> <20220111201426.326777-2-krzysztof.kozlowski@canonical.com> In-Reply-To: <20220111201426.326777-2-krzysztof.kozlowski@canonical.com> From: Sam Protsenko Date: Fri, 14 Jan 2022 18:38:37 +0200 Message-ID: Subject: Re: [PATCH v2 01/28] 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 , Chanho Park , Alim Akhtar , stable@vger.kernel.org X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220114_083851_222954_409CBF45 X-CRM114-Status: GOOD ( 22.99 ) 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 Tue, 11 Jan 2022 at 22:15, 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 > --- Reviewed-by: Sam Protsenko > drivers/pinctrl/samsung/pinctrl-samsung.c | 30 +++++++++++++++++------ > 1 file changed, 23 insertions(+), 7 deletions(-) > > diff --git a/drivers/pinctrl/samsung/pinctrl-samsung.c b/drivers/pinctrl/samsung/pinctrl-samsung.c > index 8941f658e7f1..b19ebc43d886 100644 > --- a/drivers/pinctrl/samsung/pinctrl-samsung.c > +++ b/drivers/pinctrl/samsung/pinctrl-samsung.c > @@ -1002,6 +1002,16 @@ 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; > + > + bank = d->pin_banks; > + for (i = 0; i < d->nr_banks; ++i, ++bank) > + of_node_put(bank->of_node); > +} > + > /* retrieve the soc specific data */ > static const struct samsung_pin_ctrl * > samsung_pinctrl_get_soc_data(struct samsung_pinctrl_drv_data *d, > @@ -1116,19 +1126,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 +1148,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