smatch usage (was Re: [PATCH v2 4/4] net: mdio: Add RTL9300 MDIO driver)

From: Chris Packham
Date: Tue Dec 17 2024 - 14:40:27 EST


(culled the cc list)

On 17/12/2024 23:35, Simon Horman wrote:
+ Dan Carpenter

On Tue, Dec 17, 2024 at 10:47:10AM +1300, Chris Packham wrote:
On 17/12/2024 05:48, Simon Horman wrote:
On Mon, Dec 16, 2024 at 04:13:46PM +1300, Chris Packham wrote:
Add a driver for the MDIO controller on the RTL9300 family of Ethernet
switches with integrated SoC. There are 4 physical SMI interfaces on the
RTL9300 but access is done using the switch ports so a single MDIO bus
is presented to the rest of the system.

Signed-off-by: Chris Packham <chris.packham@xxxxxxxxxxxxxxxxxxx>
...

+ if (smi_addr[0] > MAX_SMI_BUSSES)
Hi Chris,

Should this condition be

if (smi_addr[0] >= MAX_SMI_BUSSES)
Yes. You are correct.
+ return dev_err_probe(dev, -EINVAL, "illegal smi bus number %d\n",
+ smi_addr[0]);
+
+ if (smi_addr[1] > MAX_SMI_ADDR)
+ return dev_err_probe(dev, -EINVAL, "illegal smi addr %d\n", smi_addr[1]);
+
+ if (fwnode_device_is_compatible(child, "ethernet-phy-ieee802.3-c45"))
+ priv->smi_bus_isc45[smi_addr[0]] = true;
Otherwise it seems that smi_bus_isc45 may overflow here.

Flagged by Smatch.
Sounds like something I should start looking at for myself. Have you got a
link to share?
Hi Chris,

Smatch is here: https://github.com/error27/smatch
And my usage of it is informed by
https://blogs.oracle.com/linux/post/smatch-static-analysis-tool-overview-by-dan-carpenter

Thanks, I did find the repo.or.cz mirror and https://lwn.net/Articles/691882/ after I searched a bit.


FWIIW, I run it usking kchecker on individual source files.

I've also CCed the author, Dan Carpenter, for good measure.

Odd thing is I can't seem to reproduce any error report on my buggy code. I've tried `make O=build_smatch CHECK="~/src/smatch/smatch -p=kernel" C=1` and `O=build_smatch ~/src/smatch/smatch_scripts/kchecker --spammy drivers/net/mdio/mdio-realtek-rtl.c`

...