From: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
To: Jim Quinlan <james.quinlan@broadcom.com>
Cc: linux-pci@vger.kernel.org,
"Nicolas Saenz Julienne" <nsaenz@kernel.org>,
"Bjorn Helgaas" <bhelgaas@google.com>,
"Lorenzo Pieralisi" <lorenzo.pieralisi@arm.com>,
"Cyril Brulebois" <kibi@debian.org>,
"Stanimir Varbanov" <svarbanov@suse.de>,
"Krzysztof Kozlowski" <krzk@kernel.org>,
bcm-kernel-feedback-list@broadcom.com, jim2101024@gmail.com,
"Florian Fainelli" <florian.fainelli@broadcom.com>,
"Lorenzo Pieralisi" <lpieralisi@kernel.org>,
"Krzysztof Wilczyński" <kw@linux.com>,
"Rob Herring" <robh@kernel.org>,
"moderated list:BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE"
<linux-rpi-kernel@lists.infradead.org>,
"moderated list:BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE"
<linux-arm-kernel@lists.infradead.org>,
"open list" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v4 03/12] PCI: brcmstb: Use common error handling code in brcm_pcie_probe()
Date: Fri, 26 Jul 2024 10:34:23 +0530 [thread overview]
Message-ID: <20240726050423.GB2628@thinkpad> (raw)
In-Reply-To: <CA+-6iNz9R5uMogd6h+BkgRvKrsmyH2VXsGO_5e=6yqC=JzjigA@mail.gmail.com>
On Thu, Jul 25, 2024 at 03:45:59PM -0400, Jim Quinlan wrote:
> On Thu, Jul 25, 2024 at 12:31 AM Manivannan Sadhasivam
> <manivannan.sadhasivam@linaro.org> wrote:
> >
> > On Tue, Jul 16, 2024 at 05:31:18PM -0400, Jim Quinlan wrote:
> > > o Move the clk_prepare_enable() below the resource allocations.
> > > o Add a jump target (clk_out) so that a bit of exception handling can be
> > > better reused at the end of this function implementation.
> > >
> > > Signed-off-by: Jim Quinlan <james.quinlan@broadcom.com>
> > > Reviewed-by: Stanimir Varbanov <svarbanov@suse.de>
> > > Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
> > > ---
> > > drivers/pci/controller/pcie-brcmstb.c | 29 +++++++++++++++------------
> > > 1 file changed, 16 insertions(+), 13 deletions(-)
> > >
> > > diff --git a/drivers/pci/controller/pcie-brcmstb.c b/drivers/pci/controller/pcie-brcmstb.c
> > > index c08683febdd4..c257434edc08 100644
> > > --- a/drivers/pci/controller/pcie-brcmstb.c
> > > +++ b/drivers/pci/controller/pcie-brcmstb.c
> > > @@ -1613,31 +1613,30 @@ static int brcm_pcie_probe(struct platform_device *pdev)
> > >
> > > pcie->ssc = of_property_read_bool(np, "brcm,enable-ssc");
> > >
> > > - ret = clk_prepare_enable(pcie->clk);
> > > - if (ret) {
> > > - dev_err(&pdev->dev, "could not enable clock\n");
> > > - return ret;
> > > - }
> > > pcie->rescal = devm_reset_control_get_optional_shared(&pdev->dev, "rescal");
> > > - if (IS_ERR(pcie->rescal)) {
> > > - clk_disable_unprepare(pcie->clk);
> > > + if (IS_ERR(pcie->rescal))
> > > return PTR_ERR(pcie->rescal);
> > > - }
> > > +
> > > pcie->perst_reset = devm_reset_control_get_optional_exclusive(&pdev->dev, "perst");
> > > - if (IS_ERR(pcie->perst_reset)) {
> > > - clk_disable_unprepare(pcie->clk);
> > > + if (IS_ERR(pcie->perst_reset))
> > > return PTR_ERR(pcie->perst_reset);
> > > +
> > > + ret = clk_prepare_enable(pcie->clk);
> > > + if (ret) {
> > > + dev_err(&pdev->dev, "could not enable clock\n");
> > > + return ret;
> > > }
> > >
> > > ret = reset_control_reset(pcie->rescal);
> > > - if (ret)
> > > + if (ret) {
> > > dev_err(&pdev->dev, "failed to deassert 'rescal'\n");
> > > + goto clk_out;
> >
> > Please use a descriptive name for the err labels. Here this err path disables
> > and unprepares the clk, so use 'clk_disable_unprepare'.
> ack
> >
> > > + }
> > >
> > > ret = brcm_phy_start(pcie);
> > > if (ret) {
> > > reset_control_rearm(pcie->rescal);
> > > - clk_disable_unprepare(pcie->clk);
> > > - return ret;
> > > + goto clk_out;
> > > }
> > >
> > > ret = brcm_pcie_setup(pcie);
> > > @@ -1676,6 +1675,10 @@ static int brcm_pcie_probe(struct platform_device *pdev)
> > >
> > > return 0;
> > >
> > > +clk_out:
> > > + clk_disable_unprepare(pcie->clk);
> > > + return ret;
> > > +
> >
> > This is leaking the resources. Move this new label below 'fail'.
> What resources is it leaking? At "clk_out" the return value will be negative
> and only managed resources have been allocated at that juncture.
>
Right, but what about the err path below this one? If that path is taken, then
clks won't be released, right?
It is not a good design to return from each err labels. There should be only one
return for all err labels at the end and those labels need to be in reverse
order w.r.t the actual code.
- Mani
--
மணிவண்ணன் சதாசிவம்
next prev parent reply other threads:[~2024-07-26 5:04 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-16 21:31 [PATCH v4 00/12] PCI: brcnstb: Enable STB 7712 SOC Jim Quinlan
2024-07-16 21:31 ` [PATCH v4 01/12] dt-bindings: PCI: Cleanup of brcmstb YAML and add 7712 SoC Jim Quinlan
2024-07-17 6:51 ` Krzysztof Kozlowski
2024-07-17 13:20 ` Jim Quinlan
2024-07-17 13:30 ` Krzysztof Kozlowski
2024-07-23 18:49 ` Jim Quinlan
2024-07-17 21:06 ` Florian Fainelli
2024-07-18 6:02 ` Krzysztof Kozlowski
2024-07-18 6:07 ` Krzysztof Kozlowski
2024-07-23 18:44 ` Jim Quinlan
2024-07-24 8:05 ` Krzysztof Kozlowski
2024-07-24 18:57 ` Jim Quinlan
2024-07-16 21:31 ` [PATCH v4 02/12] dt-bindings: PCI: brcmstb: Add 7712 SoC description Jim Quinlan
2024-07-17 6:52 ` Krzysztof Kozlowski
2024-07-23 21:03 ` Jim Quinlan
2024-07-24 6:02 ` Krzysztof Kozlowski
2024-07-16 21:31 ` [PATCH v4 03/12] PCI: brcmstb: Use common error handling code in brcm_pcie_probe() Jim Quinlan
2024-07-25 4:31 ` Manivannan Sadhasivam
2024-07-25 19:45 ` Jim Quinlan
2024-07-26 5:04 ` Manivannan Sadhasivam [this message]
2024-07-26 18:34 ` Jim Quinlan
2024-07-27 6:40 ` Manivannan Sadhasivam
2024-07-29 15:24 ` Jim Quinlan
2024-07-16 21:31 ` [PATCH v4 04/12] PCI: brcmstb: Use bridge reset if available Jim Quinlan
2024-07-25 4:37 ` Manivannan Sadhasivam
2024-07-16 21:31 ` [PATCH v4 05/12] PCI: brcmstb: Use swinit " Jim Quinlan
2024-07-25 4:39 ` Manivannan Sadhasivam
2024-07-29 21:49 ` Jim Quinlan
2024-07-16 21:31 ` [PATCH v4 06/12] PCI: brcmstb: PCI: brcmstb: Make HARD_DEBUG, INTR2_CPU_BASE offsets SoC-specific Jim Quinlan
2024-07-25 4:43 ` Manivannan Sadhasivam
2024-07-16 21:31 ` [PATCH v4 07/12] PCI: brcmstb: Remove two unused constants from driver Jim Quinlan
2024-07-25 4:43 ` Manivannan Sadhasivam
2024-07-16 21:31 ` [PATCH v4 08/12] PCI: brcmstb: Don't conflate the reset rescal with phy ctrl Jim Quinlan
2024-07-25 4:48 ` Manivannan Sadhasivam
2024-07-26 19:03 ` Jim Quinlan
2024-07-16 21:31 ` [PATCH v4 09/12] PCI: brcmstb: Refactor for chips with many regular inbound BARs Jim Quinlan
2024-07-25 4:53 ` Manivannan Sadhasivam
2024-07-25 20:29 ` Jim Quinlan
2024-07-26 5:08 ` Manivannan Sadhasivam
2024-07-16 21:31 ` [PATCH v4 10/12] PCI: brcmstb: Check return value of all reset_control_xxx calls Jim Quinlan
2024-07-16 21:31 ` [PATCH v4 11/12] PCI: brcmstb: Change field name from 'type' to 'model' Jim Quinlan
2024-07-25 4:58 ` Manivannan Sadhasivam
2024-07-25 20:38 ` Jim Quinlan
2024-07-26 11:29 ` Manivannan Sadhasivam
2024-07-16 21:31 ` [PATCH v4 12/12] PCI: brcmstb: Enable 7712 SOCs Jim Quinlan
2024-07-25 4:59 ` Manivannan Sadhasivam
2024-07-25 5:03 ` [PATCH v4 00/12] PCI: brcnstb: Enable STB 7712 SOC Manivannan Sadhasivam
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240726050423.GB2628@thinkpad \
--to=manivannan.sadhasivam@linaro.org \
--cc=bcm-kernel-feedback-list@broadcom.com \
--cc=bhelgaas@google.com \
--cc=florian.fainelli@broadcom.com \
--cc=james.quinlan@broadcom.com \
--cc=jim2101024@gmail.com \
--cc=kibi@debian.org \
--cc=krzk@kernel.org \
--cc=kw@linux.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linux-rpi-kernel@lists.infradead.org \
--cc=lorenzo.pieralisi@arm.com \
--cc=lpieralisi@kernel.org \
--cc=nsaenz@kernel.org \
--cc=robh@kernel.org \
--cc=svarbanov@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).