[bug report] i3c: remove i2c board info from i2c_dev_desc

Dan Carpenter dan.carpenter at oracle.com
Wed Mar 9 07:12:27 PST 2022


Hello Jamie Iles,

The patch 31b9887c7258: "i3c: remove i2c board info from
i2c_dev_desc" from Jan 17, 2022, leads to the following Smatch static
checker warning:

	drivers/i3c/master.c:2311 i3c_master_i2c_adapter_init()
	error: potentially dereferencing uninitialized 'i2cdev'.

drivers/i3c/master.c
    2286 static int i3c_master_i2c_adapter_init(struct i3c_master_controller *master)
    2287 {
    2288         struct i2c_adapter *adap = i3c_master_to_i2c_adapter(master);
    2289         struct i2c_dev_desc *i2cdev;
                                      ^^^^^^

    2290         struct i2c_dev_boardinfo *i2cboardinfo;
    2291         int ret;
    2292 
    2293         adap->dev.parent = master->dev.parent;
    2294         adap->owner = master->dev.parent->driver->owner;
    2295         adap->algo = &i3c_master_i2c_algo;
    2296         strncpy(adap->name, dev_name(master->dev.parent), sizeof(adap->name));
    2297 
    2298         /* FIXME: Should we allow i3c masters to override these values? */
    2299         adap->timeout = 1000;
    2300         adap->retries = 3;
    2301 
    2302         ret = i2c_add_adapter(adap);
    2303         if (ret)
    2304                 return ret;
    2305 
    2306         /*
    2307          * We silently ignore failures here. The bus should keep working
    2308          * correctly even if one or more i2c devices are not registered.
    2309          */
    2310         list_for_each_entry(i2cboardinfo, &master->boardinfo.i2c, node)
--> 2311                 i2cdev->dev = i2c_new_client_device(adap, &i2cboardinfo->base);
                         ^^^^^^
Uninitialized

    2312 
    2313         return 0;
    2314 }

regards,
dan carpenter



More information about the linux-i3c mailing list