On Sun, Jan 30, 2022 at 08:58:55AM +0800, weiyongjun (A) wrote: > > > 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. Yeah. I had this patch in my postponed messages but you beat me to sending it. The Smatch check for this requires you to have the cross function database built. I should update it to remove that requirement for at least the common functions that you have listed. regards, dan carpenter