sound/soc/sof/imx/imx-common.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
devm_ioremap_resource does not return NULL on error
but an error pointer so we need to use IS_ERR to check
the return code.
Fixes: bc163baef570 ("ASoC: Use of_reserved_mem_region_to_resource() for "memory-region"")
Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
---
sound/soc/sof/imx/imx-common.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sound/soc/sof/imx/imx-common.c b/sound/soc/sof/imx/imx-common.c
index 40debc541bf9..b3248c65215d 100644
--- a/sound/soc/sof/imx/imx-common.c
+++ b/sound/soc/sof/imx/imx-common.c
@@ -316,7 +316,7 @@ static int imx_parse_ioremap_memory(struct snd_sof_dev *sdev)
}
sdev->bar[blk_type] = devm_ioremap_resource(sdev->dev, res);
- if (!sdev->bar[blk_type])
+ if (IS_ERR(sdev->bar[blk_type]))
return dev_err_probe(sdev->dev,
-ENOMEM,
"failed to ioremap %s region\n",
--
2.45.2
On Mon, Sep 01, 2025 at 06:15:13PM +0300, Daniel Baluta wrote: > devm_ioremap_resource does not return NULL on error > but an error pointer so we need to use IS_ERR to check > the return code. > > Fixes: bc163baef570 ("ASoC: Use of_reserved_mem_region_to_resource() for "memory-region"") > Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com> > --- > sound/soc/sof/imx/imx-common.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/sound/soc/sof/imx/imx-common.c b/sound/soc/sof/imx/imx-common.c > index 40debc541bf9..b3248c65215d 100644 > --- a/sound/soc/sof/imx/imx-common.c > +++ b/sound/soc/sof/imx/imx-common.c > @@ -316,7 +316,7 @@ static int imx_parse_ioremap_memory(struct snd_sof_dev *sdev) > } > > sdev->bar[blk_type] = devm_ioremap_resource(sdev->dev, res); > - if (!sdev->bar[blk_type]) > + if (IS_ERR(sdev->bar[blk_type])) > return dev_err_probe(sdev->dev, > -ENOMEM, It's annoying that I didn't catch this bug. It's because the error pointer was stored in an array instead of a a "simple" variable. Smatch does actually have a lower quality warning for this but I wasn't reviewing them since that check had too many false positives. I've done a little hack around, so this bug will be caught in the future and it found a few other similar bugs which I've fixed as well. regards, dan carpenter
On Mon, Sep 01, 2025 at 06:15:13PM +0300, Daniel Baluta wrote: > devm_ioremap_resource does not return NULL on error > but an error pointer so we need to use IS_ERR to check > the return code. > sdev->bar[blk_type] = devm_ioremap_resource(sdev->dev, res); > - if (!sdev->bar[blk_type]) > + if (IS_ERR(sdev->bar[blk_type])) > return dev_err_probe(sdev->dev, > -ENOMEM, > "failed to ioremap %s region\n", If it's returning an error code we should feed that into dev_err_probe() rather than hard coding to -ENOMEM.
© 2016 - 2025 Red Hat, Inc.