From: Josh Triplett <josh@joshtriplett.org>
To: Joe Perches <joe@perches.com>
Cc: Jingoo Han <jg1.han@samsung.com>,
'Christopher Li' <sparse@chrisli.org>,
linux-sparse@vger.kernel.org,
'Dan Carpenter' <dan.carpenter@oracle.com>,
'Jason Gunthorpe' <jgunthorpe@obsidianresearch.com>,
'Jason Cooper' <jason@lakedaemon.net>,
'Thomas Petazzoni' <thomas.petazzoni@free-electrons.com>,
'Bjorn Helgaas' <bhelgaas@google.com>,
linux-pci@vger.kernel.org,
'Ezequiel Garcia' <ezequiel.garcia@free-electrons.com>,
linux-arm-kernel@lists.infradead.org,
'Axel Lin' <axel.lin@ingics.com>,
'Julia Lawall' <julia.lawall@lip6.fr>
Subject: Re: PCI: mvebu: return NULL instead of ERR_PTR(ret)
Date: Tue, 26 Nov 2013 18:35:27 -0800 [thread overview]
Message-ID: <20131127023526.GA14732@leaf> (raw)
In-Reply-To: <1385519196.18487.25.camel@joe-AO722>
On Tue, Nov 26, 2013 at 06:26:36PM -0800, Joe Perches wrote:
> On Wed, 2013-11-27 at 10:59 +0900, Jingoo Han wrote:
> []
> > ./drivers/pci/host/pci-mvebu.c
> > static void __iomem *mvebu_pcie_map_registers(struct platform_device *pdev,
> > struct device_node *np, struct mvebu_pcie_port *port)
> > {
> > .....
> >
> > ret = of_address_to_resource(np, 0, ®s);
> > if (ret)
> > - return ERR_PTR(ret);
> > + return (void __iomem *)ERR_PTR(ret);
> >
> > However, other engineers said that "(void __iomem *)ERR_PTR(ret)"
> > is not a general pattern. I cannot find the proper method to resolve
> > this sparse warning.
> >
> > In this case, how can I resolve this sparse warning?
>
> I think there's no problem using the cast. It's not a
> pattern because it's not been required before as function
> returns have not previously been declared __iomem.
>
> Or, perhaps the arm|hexagon specific #define below could
> be made generic so it could be used.
>
> arch/arm/include/asm/io.h:#define IOMEM(x) ((void __force __iomem *)(x))
>
> return IOMEM(ERR_PTR(ret));
>
> There aren't any current uses of return IOMEM(foo) either
> though so the direct cast is probably more appropriate.
I don't think that #define is appropriate for any non-constant value;
almost any instance of that __force cast applied to a variable would be
better written by fixing types more appropriately. I'd suggest
updating that #define for both architectures to use BUILD_BUG_ON to
assert __builtin_constant_p on its argument.
- Josh Triplett
WARNING: multiple messages have this Message-ID (diff)
From: josh@joshtriplett.org (Josh Triplett)
To: linux-arm-kernel@lists.infradead.org
Subject: PCI: mvebu: return NULL instead of ERR_PTR(ret)
Date: Tue, 26 Nov 2013 18:35:27 -0800 [thread overview]
Message-ID: <20131127023526.GA14732@leaf> (raw)
In-Reply-To: <1385519196.18487.25.camel@joe-AO722>
On Tue, Nov 26, 2013 at 06:26:36PM -0800, Joe Perches wrote:
> On Wed, 2013-11-27 at 10:59 +0900, Jingoo Han wrote:
> []
> > ./drivers/pci/host/pci-mvebu.c
> > static void __iomem *mvebu_pcie_map_registers(struct platform_device *pdev,
> > struct device_node *np, struct mvebu_pcie_port *port)
> > {
> > .....
> >
> > ret = of_address_to_resource(np, 0, ®s);
> > if (ret)
> > - return ERR_PTR(ret);
> > + return (void __iomem *)ERR_PTR(ret);
> >
> > However, other engineers said that "(void __iomem *)ERR_PTR(ret)"
> > is not a general pattern. I cannot find the proper method to resolve
> > this sparse warning.
> >
> > In this case, how can I resolve this sparse warning?
>
> I think there's no problem using the cast. It's not a
> pattern because it's not been required before as function
> returns have not previously been declared __iomem.
>
> Or, perhaps the arm|hexagon specific #define below could
> be made generic so it could be used.
>
> arch/arm/include/asm/io.h:#define IOMEM(x) ((void __force __iomem *)(x))
>
> return IOMEM(ERR_PTR(ret));
>
> There aren't any current uses of return IOMEM(foo) either
> though so the direct cast is probably more appropriate.
I don't think that #define is appropriate for any non-constant value;
almost any instance of that __force cast applied to a variable would be
better written by fixing types more appropriately. I'd suggest
updating that #define for both architectures to use BUILD_BUG_ON to
assert __builtin_constant_p on its argument.
- Josh Triplett
next prev parent reply other threads:[~2013-11-27 2:35 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-17 5:25 [PATCH V2 1/3] PCI: tegra: add missing __iomem annotation Jingoo Han
2013-09-17 5:26 ` [PATCH V2 2/3] PCI: mvebu: make local functions static Jingoo Han
2013-09-17 5:27 ` [PATCH V2 3/3] PCI: mvebu: add missing __iomem annotation Jingoo Han
2013-09-17 17:42 ` Thomas Petazzoni
2013-09-23 2:27 ` Jingoo Han
2013-09-23 4:35 ` [PATCH V3 3/3] PCI: mvebu: return NULL instead of ERR_PTR(ret) Jingoo Han
2013-09-23 7:24 ` Thomas Petazzoni
2013-11-25 20:02 ` Jason Gunthorpe
2013-11-25 20:02 ` Jason Gunthorpe
2013-11-26 5:31 ` Jingoo Han
2013-11-26 5:31 ` Jingoo Han
2013-11-26 12:27 ` Jason Cooper
2013-11-26 12:27 ` Jason Cooper
2013-11-26 18:09 ` Jason Gunthorpe
2013-11-26 18:09 ` Jason Gunthorpe
2013-11-27 1:59 ` Jingoo Han
2013-11-27 1:59 ` Jingoo Han
2013-11-27 1:59 ` Jingoo Han
2013-11-27 2:17 ` [PATCH] linux/err.h: Provide an ERR_PTR_IO that returns an __iomem pointer Josh Triplett
2013-11-27 2:17 ` Josh Triplett
2013-11-27 2:26 ` PCI: mvebu: return NULL instead of ERR_PTR(ret) Joe Perches
2013-11-27 2:26 ` Joe Perches
2013-11-27 2:35 ` Josh Triplett [this message]
2013-11-27 2:35 ` Josh Triplett
2013-11-27 2:48 ` Joe Perches
2013-11-27 2:48 ` Joe Perches
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=20131127023526.GA14732@leaf \
--to=josh@joshtriplett.org \
--cc=axel.lin@ingics.com \
--cc=bhelgaas@google.com \
--cc=dan.carpenter@oracle.com \
--cc=ezequiel.garcia@free-electrons.com \
--cc=jason@lakedaemon.net \
--cc=jg1.han@samsung.com \
--cc=jgunthorpe@obsidianresearch.com \
--cc=joe@perches.com \
--cc=julia.lawall@lip6.fr \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-pci@vger.kernel.org \
--cc=linux-sparse@vger.kernel.org \
--cc=sparse@chrisli.org \
--cc=thomas.petazzoni@free-electrons.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.