Re: [PATCH] drivers/pci/controller: fix warning PTR_ERR_OR_ZERO can be used

From: Lorenzo Pieralisi
Date: Fri May 31 2019 - 10:51:15 EST


On Mon, May 27, 2019 at 04:09:52PM +0200, Thierry Reding wrote:
> On Sat, May 25, 2019 at 02:27:48PM +0530, Hariprasad Kelam wrote:
> > fix below warnings reported by coccichek
> >
> > /drivers/pci/controller/pci-tegra.c:1132:1-3: WARNING: PTR_ERR_OR_ZERO
> > can be used
>
> This has been discussed many times before, but PTR_ERR_OR_ZERO is not
> liked by everybody. Most of these are actually in place on purpose. One
> of the reasons I hear most frequently cited in opposition to this macro
> is that it complicates things when you need to add some new code in, so
> PTR_ERR_OR_ZERO() becomes wrong and has to be changed. The original,
> with the "return 0;" being explicit doesn't have that problem and you
> can easily add things in between.
>
> It's obviously up to Bjorn to decide whether he wants this, but I
> vaguely remember discussing this particular instance with him before and
> we both agreed that we didn't think this was worth it.

+1, patch dropped, thanks Hariprasad for reporting it anyway.

Lorenzo

> Perhaps it's time to make checkpatch not complain about this anymore? Or
> at least make this not a WARNING.
>
> Thierry
>
> > ./drivers/pci/controller/dwc/pcie-qcom.c:703:1-3: WARNING:
> > PTR_ERR_OR_ZERO can be used
> > ./drivers/pci/controller/dwc/pci-meson.c:185:1-3: WARNING:
> > PTR_ERR_OR_ZERO can be used
> > ./drivers/pci/controller/dwc/pci-meson.c:262:1-3: WARNING:
> > PTR_ERR_OR_ZERO can be used
> > ./drivers/pci/controller/dwc/pcie-kirin.c:141:1-3: WARNING:
> > PTR_ERR_OR_ZERO can be used
> > ./drivers/pci/controller/dwc/pcie-kirin.c:177:1-3: WARNING:
> > PTR_ERR_OR_ZERO can be used
> > ./drivers/pci/controller/dwc/pci-exynos.c:95:1-3: WARNING:
> > PTR_ERR_OR_ZERO can be used
> >
> > Signed-off-by: Hariprasad Kelam <hariprasad.kelam@xxxxxxxxx>
> > ---
> > drivers/pci/controller/dwc/pci-exynos.c | 4 +---
> > drivers/pci/controller/dwc/pci-meson.c | 8 ++------
> > drivers/pci/controller/dwc/pcie-kirin.c | 8 ++------
> > drivers/pci/controller/dwc/pcie-qcom.c | 4 +---
> > drivers/pci/controller/pci-tegra.c | 4 +---
> > 5 files changed, 7 insertions(+), 21 deletions(-)
> >
> > diff --git a/drivers/pci/controller/dwc/pci-exynos.c b/drivers/pci/controller/dwc/pci-exynos.c
> > index cee5f2f..b0b4849 100644
> > --- a/drivers/pci/controller/dwc/pci-exynos.c
> > +++ b/drivers/pci/controller/dwc/pci-exynos.c
> > @@ -92,10 +92,8 @@ static int exynos5440_pcie_get_mem_resources(struct platform_device *pdev,
> >
> > res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> > ep->mem_res->elbi_base = devm_ioremap_resource(dev, res);
> > - if (IS_ERR(ep->mem_res->elbi_base))
> > - return PTR_ERR(ep->mem_res->elbi_base);
> >
> > - return 0;
> > + return PTR_ERR_OR_ZERO(ep->mem_res->elbi_base);
> > }
> >
> > static int exynos5440_pcie_get_clk_resources(struct exynos_pcie *ep)
> > diff --git a/drivers/pci/controller/dwc/pci-meson.c b/drivers/pci/controller/dwc/pci-meson.c
> > index e35e9ea..1ca78c2 100644
> > --- a/drivers/pci/controller/dwc/pci-meson.c
> > +++ b/drivers/pci/controller/dwc/pci-meson.c
> > @@ -182,10 +182,8 @@ static int meson_pcie_get_mems(struct platform_device *pdev,
> >
> > /* Meson SoC has two PCI controllers use same phy register*/
> > mp->mem_res.phy_base = meson_pcie_get_mem_shared(pdev, mp, "phy");
> > - if (IS_ERR(mp->mem_res.phy_base))
> > - return PTR_ERR(mp->mem_res.phy_base);
> >
> > - return 0;
> > + return PTR_ERR_OR_ZERO(mp->mem_res.phy_base);
> > }
> >
> > static void meson_pcie_power_on(struct meson_pcie *mp)
> > @@ -259,10 +257,8 @@ static int meson_pcie_probe_clocks(struct meson_pcie *mp)
> > return PTR_ERR(res->general_clk);
> >
> > res->clk = meson_pcie_probe_clock(dev, "pcie", 0);
> > - if (IS_ERR(res->clk))
> > - return PTR_ERR(res->clk);
> >
> > - return 0;
> > + return PTR_ERR_OR_ZERO(res->clk);
> > }
> >
> > static inline void meson_elb_writel(struct meson_pcie *mp, u32 val, u32 reg)
> > diff --git a/drivers/pci/controller/dwc/pcie-kirin.c b/drivers/pci/controller/dwc/pcie-kirin.c
> > index 9b59929..87cfdb4 100644
> > --- a/drivers/pci/controller/dwc/pcie-kirin.c
> > +++ b/drivers/pci/controller/dwc/pcie-kirin.c
> > @@ -138,10 +138,8 @@ static long kirin_pcie_get_clk(struct kirin_pcie *kirin_pcie,
> > return PTR_ERR(kirin_pcie->apb_sys_clk);
> >
> > kirin_pcie->pcie_aclk = devm_clk_get(dev, "pcie_aclk");
> > - if (IS_ERR(kirin_pcie->pcie_aclk))
> > - return PTR_ERR(kirin_pcie->pcie_aclk);
> >
> > - return 0;
> > + return PTR_ERR_OR_ZERO(kirin_pcie->pcie_aclk);
> > }
> >
> > static long kirin_pcie_get_resource(struct kirin_pcie *kirin_pcie,
> > @@ -174,10 +172,8 @@ static long kirin_pcie_get_resource(struct kirin_pcie *kirin_pcie,
> >
> > kirin_pcie->sysctrl =
> > syscon_regmap_lookup_by_compatible("hisilicon,hi3660-sctrl");
> > - if (IS_ERR(kirin_pcie->sysctrl))
> > - return PTR_ERR(kirin_pcie->sysctrl);
> >
> > - return 0;
> > + return PTR_ERR_OR_ZERO(kirin_pcie->sysctrl);
> > }
> >
> > static int kirin_pcie_phy_init(struct kirin_pcie *kirin_pcie)
> > diff --git a/drivers/pci/controller/dwc/pcie-qcom.c b/drivers/pci/controller/dwc/pcie-qcom.c
> > index 0ed235d..6c421e6 100644
> > --- a/drivers/pci/controller/dwc/pcie-qcom.c
> > +++ b/drivers/pci/controller/dwc/pcie-qcom.c
> > @@ -700,10 +700,8 @@ static int qcom_pcie_get_resources_2_4_0(struct qcom_pcie *pcie)
> > return PTR_ERR(res->ahb_reset);
> >
> > res->phy_ahb_reset = devm_reset_control_get_exclusive(dev, "phy_ahb");
> > - if (IS_ERR(res->phy_ahb_reset))
> > - return PTR_ERR(res->phy_ahb_reset);
> >
> > - return 0;
> > + return PTR_ERR_OR_ZERO(res->phy_ahb_reset);
> > }
> >
> > static void qcom_pcie_deinit_2_4_0(struct qcom_pcie *pcie)
> > diff --git a/drivers/pci/controller/pci-tegra.c b/drivers/pci/controller/pci-tegra.c
> > index 464ba25..3cd5069 100644
> > --- a/drivers/pci/controller/pci-tegra.c
> > +++ b/drivers/pci/controller/pci-tegra.c
> > @@ -1129,10 +1129,8 @@ static int tegra_pcie_resets_get(struct tegra_pcie *pcie)
> > return PTR_ERR(pcie->afi_rst);
> >
> > pcie->pcie_xrst = devm_reset_control_get_exclusive(dev, "pcie_x");
> > - if (IS_ERR(pcie->pcie_xrst))
> > - return PTR_ERR(pcie->pcie_xrst);
> >
> > - return 0;
> > + return PTR_ERR_OR_ZERO(pcie->pcie_xrst);
> > }
> >
> > static int tegra_pcie_phys_get_legacy(struct tegra_pcie *pcie)
> > --
> > 2.7.4
> >