On Sat, Jan 29, 2022 at 01:27, Wei Yongjun <weiyongjun1@xxxxxxxxxx> wrote:
In case of error, the function devm_ioremap() returns NULL pointer
not ERR_PTR(). The IS_ERR() test in the return value check should
be replaced with NULL test.
Fixes: 1d14eb15dc2c ("net/fsl: xgmac_mdio: Use managed device resources")
Reported-by: Hulk Robot <hulkci@xxxxxxxxxx>
Signed-off-by: Wei Yongjun <weiyongjun1@xxxxxxxxxx>
Reviewed-by: Tobias Waldekranz <tobias@xxxxxxxxxxxxxx>
Sorry about that. I started out by using devm_ioremap_resource, which
uses the in-band error signaling, and forgot to match the guard when I
changed it.
I see that this was reported by your CI, do you mind me asking what it
is running in the back-end? At least my version of sparse does not seem
to catch this.
It was reported by coccinelle with follow script:
@@
expression ret, E;
@@
ret = \(devm_ioport_map\|
devm_ioremap\|
devm_ioremap_wc\|
devm_irq_alloc_generic_chip\|
devm_kasprintf\|
devm_kcalloc\|
devm_kmalloc\|
devm_kmalloc_array\|
devm_kmemdup\|
devm_kstrdup\|
devm_kzalloc\|
\)(...);
... when != ret = E
(
- IS_ERR(ret)
+ !ret
|
- !IS_ERR(ret)
+ ret
|
- PTR_ERR(ret)
+ -ENOMEM
)
It seems smatch also can report this.
Regards,
Wei Yongjun