[PATCH phy-next] phy: apple: apple: Check the actual ioremap return value

Janne Grunau j at jannau.net
Sat Feb 14 23:58:39 PST 2026


Hej Vladimir,

On Tue, Feb 10, 2026 at 10:48:22PM +0200, Vladimir Oltean wrote:
> Hello Janne,
> 
> On Sat, Feb 07, 2026 at 05:40:34PM +0100, Janne Grunau wrote:
> > The address where the devm_ioremap_resource() return value is stored is
> > always a valid pointer. Check the actual return value instead as that
> > that might be an error value.
> > 
> > Reported-by: Dan Carpenter <dan.carpenter at linaro.org>
> > Closes: https://lore.kernel.org/asahi/aYXvX1bYOXtYCgfC@stanley.mountain/
> > Fixes: 8e98ca1e74db ("phy: apple: Add Apple Type-C PHY")
> > Signed-off-by: Janne Grunau <j at jannau.net>
> > ---
> >  drivers/phy/apple/atc.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/drivers/phy/apple/atc.c b/drivers/phy/apple/atc.c
> > index dc867f368b68748ea953e594ad998d7f965d8d1d..c144e273a555a741b49adfccbe046df83d193e03 100644
> > --- a/drivers/phy/apple/atc.c
> > +++ b/drivers/phy/apple/atc.c
> > @@ -2206,7 +2206,7 @@ static int atcphy_map_resources(struct platform_device *pdev, struct apple_atcph
> >  	for (int i = 0; i < ARRAY_SIZE(resources); i++) {
> >  		res = platform_get_resource_byname(pdev, IORESOURCE_MEM, resources[i].name);
> >  		*resources[i].addr = devm_ioremap_resource(&pdev->dev, res);
> > -		if (IS_ERR(resources[i].addr))
> > +		if (IS_ERR(*resources[i].addr))
> >  			return dev_err_probe(atcphy->dev, PTR_ERR(resources[i].addr),
> >  					     "Unable to map %s regs", resources[i].name);
> 
> This does not seem correct - every call site that tests a pointer for
> IS_ERR() also decodes the error using PTR_ERR(). Whereas you are here
> creating the pattern "if (IS_ERR(*a)) return PTR_ERR(a)".

missed this.

> Proven practice seems to tell us that insisting to save the
> devm_ioremap_resource() return code directly in *resources[i].addr
> is too complex here.
> 
> Would you consider creating a temporary "void __iomem *addr" local
> variable, and set "*resources[i].addr = addr" only once it's validated?
> This would make the code obviously correct upon review.

I agree. A local variable makes this easier to read. Thanks for spotting
this and the suggestion. I'll change that for v2.

Janne



More information about the linux-phy mailing list