CC: [email protected]
CC: [email protected]
TO: Hans de Goede <[email protected]>
CC: Jonathan Cameron <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio.git 
fixes-togreg
head:   21472ddd425831f6cf39b3034e825df2825ec850
commit: 4787cdbfbcb9590e6d9fb4809e0b667a3f491747 [11/12] iio: mma8452: Fix 
probe failing when an i2c_device_id is used
:::::: branch date: 3 hours ago
:::::: commit date: 7 days ago
config: x86_64-randconfig-m001 
(https://download.01.org/0day-ci/archive/20220207/[email protected]/config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>
Reported-by: Dan Carpenter <[email protected]>

smatch warnings:
drivers/iio/accel/mma8452.c:1595 mma8452_probe() error: we previously assumed 
'id' could be null (see line 1536)

vim +/id +1595 drivers/iio/accel/mma8452.c

c3cdd6e48e35b7 Martin Kepplinger     2015-09-01  1518  
c7eeea93ac60ab Peter Meerwald        2014-02-05  1519  static int 
mma8452_probe(struct i2c_client *client,
c7eeea93ac60ab Peter Meerwald        2014-02-05  1520                    const 
struct i2c_device_id *id)
c7eeea93ac60ab Peter Meerwald        2014-02-05  1521  {
c7eeea93ac60ab Peter Meerwald        2014-02-05  1522   struct mma8452_data 
*data;
c7eeea93ac60ab Peter Meerwald        2014-02-05  1523   struct iio_dev 
*indio_dev;
c7eeea93ac60ab Peter Meerwald        2014-02-05  1524   int ret;
c3cdd6e48e35b7 Martin Kepplinger     2015-09-01  1525   const struct 
of_device_id *match;
4787cdbfbcb959 Hans de Goede         2022-01-06  1526   const char *compatible;
c3cdd6e48e35b7 Martin Kepplinger     2015-09-01  1527  
c7eeea93ac60ab Peter Meerwald        2014-02-05  1528   indio_dev = 
devm_iio_device_alloc(&client->dev, sizeof(*data));
c7eeea93ac60ab Peter Meerwald        2014-02-05  1529   if (!indio_dev)
c7eeea93ac60ab Peter Meerwald        2014-02-05  1530           return -ENOMEM;
c7eeea93ac60ab Peter Meerwald        2014-02-05  1531  
c7eeea93ac60ab Peter Meerwald        2014-02-05  1532   data = 
iio_priv(indio_dev);
c7eeea93ac60ab Peter Meerwald        2014-02-05  1533   data->client = client;
c7eeea93ac60ab Peter Meerwald        2014-02-05  1534   mutex_init(&data->lock);
4787cdbfbcb959 Hans de Goede         2022-01-06  1535  
4787cdbfbcb959 Hans de Goede         2022-01-06 @1536   if (id) {
4787cdbfbcb959 Hans de Goede         2022-01-06  1537           compatible = 
id->name;
4787cdbfbcb959 Hans de Goede         2022-01-06  1538           data->chip_info 
= &mma_chip_info_table[id->driver_data];
4787cdbfbcb959 Hans de Goede         2022-01-06  1539   } else {
4787cdbfbcb959 Hans de Goede         2022-01-06  1540           match = 
of_match_device(mma8452_dt_ids, &client->dev);
4787cdbfbcb959 Hans de Goede         2022-01-06  1541           if (!match) {
4787cdbfbcb959 Hans de Goede         2022-01-06  1542                   
dev_err(&client->dev, "unknown device model\n");
4787cdbfbcb959 Hans de Goede         2022-01-06  1543                   return 
-ENODEV;
4787cdbfbcb959 Hans de Goede         2022-01-06  1544           }
4787cdbfbcb959 Hans de Goede         2022-01-06  1545           compatible = 
match->compatible;
c3cdd6e48e35b7 Martin Kepplinger     2015-09-01  1546           data->chip_info 
= match->data;
4787cdbfbcb959 Hans de Goede         2022-01-06  1547   }
c3cdd6e48e35b7 Martin Kepplinger     2015-09-01  1548  
f6ff49b8a3b6f7 Anson Huang           2019-01-08  1549   data->vdd_reg = 
devm_regulator_get(&client->dev, "vdd");
c8b9a02361d993 Krzysztof Kozlowski   2020-08-29  1550   if 
(IS_ERR(data->vdd_reg))
c8b9a02361d993 Krzysztof Kozlowski   2020-08-29  1551           return 
dev_err_probe(&client->dev, PTR_ERR(data->vdd_reg),
c8b9a02361d993 Krzysztof Kozlowski   2020-08-29  1552                           
     "failed to get VDD regulator!\n");
f6ff49b8a3b6f7 Anson Huang           2019-01-08  1553  
f6ff49b8a3b6f7 Anson Huang           2019-01-08  1554   data->vddio_reg = 
devm_regulator_get(&client->dev, "vddio");
c8b9a02361d993 Krzysztof Kozlowski   2020-08-29  1555   if 
(IS_ERR(data->vddio_reg))
c8b9a02361d993 Krzysztof Kozlowski   2020-08-29  1556           return 
dev_err_probe(&client->dev, PTR_ERR(data->vddio_reg),
c8b9a02361d993 Krzysztof Kozlowski   2020-08-29  1557                           
     "failed to get VDDIO regulator!\n");
f6ff49b8a3b6f7 Anson Huang           2019-01-08  1558  
f6ff49b8a3b6f7 Anson Huang           2019-01-08  1559   ret = 
regulator_enable(data->vdd_reg);
f6ff49b8a3b6f7 Anson Huang           2019-01-08  1560   if (ret) {
f6ff49b8a3b6f7 Anson Huang           2019-01-08  1561           
dev_err(&client->dev, "failed to enable VDD regulator!\n");
f6ff49b8a3b6f7 Anson Huang           2019-01-08  1562           return ret;
f6ff49b8a3b6f7 Anson Huang           2019-01-08  1563   }
f6ff49b8a3b6f7 Anson Huang           2019-01-08  1564  
f6ff49b8a3b6f7 Anson Huang           2019-01-08  1565   ret = 
regulator_enable(data->vddio_reg);
f6ff49b8a3b6f7 Anson Huang           2019-01-08  1566   if (ret) {
f6ff49b8a3b6f7 Anson Huang           2019-01-08  1567           
dev_err(&client->dev, "failed to enable VDDIO regulator!\n");
f6ff49b8a3b6f7 Anson Huang           2019-01-08  1568           goto 
disable_regulator_vdd;
f6ff49b8a3b6f7 Anson Huang           2019-01-08  1569   }
f6ff49b8a3b6f7 Anson Huang           2019-01-08  1570  
417e008ba9db7c Martin Kepplinger     2015-09-01  1571   ret = 
i2c_smbus_read_byte_data(client, MMA8452_WHO_AM_I);
417e008ba9db7c Martin Kepplinger     2015-09-01  1572   if (ret < 0)
f6ff49b8a3b6f7 Anson Huang           2019-01-08  1573           goto 
disable_regulators;
417e008ba9db7c Martin Kepplinger     2015-09-01  1574  
417e008ba9db7c Martin Kepplinger     2015-09-01  1575   switch (ret) {
244a93f651937a Martin Kepplinger     2016-01-16  1576   case MMA8451_DEVICE_ID:
417e008ba9db7c Martin Kepplinger     2015-09-01  1577   case MMA8452_DEVICE_ID:
417e008ba9db7c Martin Kepplinger     2015-09-01  1578   case MMA8453_DEVICE_ID:
417e008ba9db7c Martin Kepplinger     2015-09-01  1579   case MMA8652_DEVICE_ID:
417e008ba9db7c Martin Kepplinger     2015-09-01  1580   case MMA8653_DEVICE_ID:
e8731180fbf6fd Martin Kepplinger     2016-03-09  1581   case FXLS8471_DEVICE_ID:
417e008ba9db7c Martin Kepplinger     2015-09-01  1582           if (ret == 
data->chip_info->chip_id)
417e008ba9db7c Martin Kepplinger     2015-09-01  1583                   break;
df561f6688fef7 Gustavo A. R. Silva   2020-08-23  1584           fallthrough;
417e008ba9db7c Martin Kepplinger     2015-09-01  1585   default:
f6ff49b8a3b6f7 Anson Huang           2019-01-08  1586           ret = -ENODEV;
f6ff49b8a3b6f7 Anson Huang           2019-01-08  1587           goto 
disable_regulators;
417e008ba9db7c Martin Kepplinger     2015-09-01  1588   }
417e008ba9db7c Martin Kepplinger     2015-09-01  1589  
c3cdd6e48e35b7 Martin Kepplinger     2015-09-01  1590   dev_info(&client->dev, 
"registering %s accelerometer; ID 0x%x\n",
4787cdbfbcb959 Hans de Goede         2022-01-06  1591            compatible, 
data->chip_info->chip_id);
c7eeea93ac60ab Peter Meerwald        2014-02-05  1592  
c7eeea93ac60ab Peter Meerwald        2014-02-05  1593   
i2c_set_clientdata(client, indio_dev);
c7eeea93ac60ab Peter Meerwald        2014-02-05  1594   indio_dev->info = 
&mma8452_info;
c7eeea93ac60ab Peter Meerwald        2014-02-05 @1595   indio_dev->name = 
id->name;
c7eeea93ac60ab Peter Meerwald        2014-02-05  1596   indio_dev->modes = 
INDIO_DIRECT_MODE;
c3cdd6e48e35b7 Martin Kepplinger     2015-09-01  1597   indio_dev->channels = 
data->chip_info->channels;
c3cdd6e48e35b7 Martin Kepplinger     2015-09-01  1598   indio_dev->num_channels 
= data->chip_info->num_channels;
c7eeea93ac60ab Peter Meerwald        2014-02-05  1599   
indio_dev->available_scan_masks = mma8452_scan_masks;
c7eeea93ac60ab Peter Meerwald        2014-02-05  1600  
ecabae71319695 Martin Fuzzey         2015-05-13  1601   ret = 
mma8452_reset(client);
c7eeea93ac60ab Peter Meerwald        2014-02-05  1602   if (ret < 0)
f6ff49b8a3b6f7 Anson Huang           2019-01-08  1603           goto 
disable_regulators;
c7eeea93ac60ab Peter Meerwald        2014-02-05  1604  
c7eeea93ac60ab Peter Meerwald        2014-02-05  1605   data->data_cfg = 
MMA8452_DATA_CFG_FS_2G;
c7eeea93ac60ab Peter Meerwald        2014-02-05  1606   ret = 
i2c_smbus_write_byte_data(client, MMA8452_DATA_CFG,
c7eeea93ac60ab Peter Meerwald        2014-02-05  1607                           
        data->data_cfg);
c7eeea93ac60ab Peter Meerwald        2014-02-05  1608   if (ret < 0)
f6ff49b8a3b6f7 Anson Huang           2019-01-08  1609           goto 
disable_regulators;
c7eeea93ac60ab Peter Meerwald        2014-02-05  1610  
28e3427824ccc8 Martin Fuzzey         2015-06-01  1611   /*
28e3427824ccc8 Martin Fuzzey         2015-06-01  1612    * By default set 
transient threshold to max to avoid events if
28e3427824ccc8 Martin Fuzzey         2015-06-01  1613    * enabling without 
configuring threshold.
28e3427824ccc8 Martin Fuzzey         2015-06-01  1614    */
28e3427824ccc8 Martin Fuzzey         2015-06-01  1615   ret = 
i2c_smbus_write_byte_data(client, MMA8452_TRANSIENT_THS,
28e3427824ccc8 Martin Fuzzey         2015-06-01  1616                           
        MMA8452_TRANSIENT_THS_MASK);
28e3427824ccc8 Martin Fuzzey         2015-06-01  1617   if (ret < 0)
f6ff49b8a3b6f7 Anson Huang           2019-01-08  1618           goto 
disable_regulators;
28e3427824ccc8 Martin Fuzzey         2015-06-01  1619  
28e3427824ccc8 Martin Fuzzey         2015-06-01  1620   if (client->irq) {
d2a3e0931a8f3b Martin Kepplinger     2015-10-15  1621           int irq2;
28e3427824ccc8 Martin Fuzzey         2015-06-01  1622  
d2a3e0931a8f3b Martin Kepplinger     2015-10-15  1623           irq2 = 
of_irq_get_byname(client->dev.of_node, "INT2");
d2a3e0931a8f3b Martin Kepplinger     2015-10-15  1624  
d2a3e0931a8f3b Martin Kepplinger     2015-10-15  1625           if (irq2 == 
client->irq) {
d2a3e0931a8f3b Martin Kepplinger     2015-10-15  1626                   
dev_dbg(&client->dev, "using interrupt line INT2\n");
d2a3e0931a8f3b Martin Kepplinger     2015-10-15  1627           } else {
28e3427824ccc8 Martin Fuzzey         2015-06-01  1628                   ret = 
i2c_smbus_write_byte_data(client,
28e3427824ccc8 Martin Fuzzey         2015-06-01  1629                           
                MMA8452_CTRL_REG5,
605f72de137ad9 Harinath Nampally     2017-09-09  1630                           
                data->chip_info->all_events);
28e3427824ccc8 Martin Fuzzey         2015-06-01  1631                   if (ret 
< 0)
f6ff49b8a3b6f7 Anson Huang           2019-01-08  1632                           
goto disable_regulators;
28e3427824ccc8 Martin Fuzzey         2015-06-01  1633  
d2a3e0931a8f3b Martin Kepplinger     2015-10-15  1634                   
dev_dbg(&client->dev, "using interrupt line INT1\n");
d2a3e0931a8f3b Martin Kepplinger     2015-10-15  1635           }
d2a3e0931a8f3b Martin Kepplinger     2015-10-15  1636  
28e3427824ccc8 Martin Fuzzey         2015-06-01  1637           ret = 
i2c_smbus_write_byte_data(client,
28e3427824ccc8 Martin Fuzzey         2015-06-01  1638                           
        MMA8452_CTRL_REG4,
605f72de137ad9 Harinath Nampally     2017-09-09  1639                           
        data->chip_info->enabled_events);
ae6d9ce05691bf Martin Fuzzey         2015-06-01  1640           if (ret < 0)
f6ff49b8a3b6f7 Anson Huang           2019-01-08  1641                   goto 
disable_regulators;
ae6d9ce05691bf Martin Fuzzey         2015-06-01  1642  
ae6d9ce05691bf Martin Fuzzey         2015-06-01  1643           ret = 
mma8452_trigger_setup(indio_dev);
28e3427824ccc8 Martin Fuzzey         2015-06-01  1644           if (ret < 0)
f6ff49b8a3b6f7 Anson Huang           2019-01-08  1645                   goto 
disable_regulators;
28e3427824ccc8 Martin Fuzzey         2015-06-01  1646   }
28e3427824ccc8 Martin Fuzzey         2015-06-01  1647  
ecabae71319695 Martin Fuzzey         2015-05-13  1648   data->ctrl_reg1 = 
MMA8452_CTRL_ACTIVE |
ecabae71319695 Martin Fuzzey         2015-05-13  1649                     
(MMA8452_CTRL_DR_DEFAULT << MMA8452_CTRL_DR_SHIFT);
a45d1238870446 Richard Tresidder     2018-05-11  1650  
a45d1238870446 Richard Tresidder     2018-05-11  1651   data->sleep_val = 
mma8452_calculate_sleep(data);
a45d1238870446 Richard Tresidder     2018-05-11  1652  
ecabae71319695 Martin Fuzzey         2015-05-13  1653   ret = 
i2c_smbus_write_byte_data(client, MMA8452_CTRL_REG1,
ecabae71319695 Martin Fuzzey         2015-05-13  1654                           
        data->ctrl_reg1);
ecabae71319695 Martin Fuzzey         2015-05-13  1655   if (ret < 0)
ae6d9ce05691bf Martin Fuzzey         2015-06-01  1656           goto 
trigger_cleanup;
ecabae71319695 Martin Fuzzey         2015-05-13  1657  
c7eeea93ac60ab Peter Meerwald        2014-02-05  1658   ret = 
iio_triggered_buffer_setup(indio_dev, NULL,
c7eeea93ac60ab Peter Meerwald        2014-02-05  1659                           
         mma8452_trigger_handler, NULL);
c7eeea93ac60ab Peter Meerwald        2014-02-05  1660   if (ret < 0)
ae6d9ce05691bf Martin Fuzzey         2015-06-01  1661           goto 
trigger_cleanup;
c7eeea93ac60ab Peter Meerwald        2014-02-05  1662  
28e3427824ccc8 Martin Fuzzey         2015-06-01  1663   if (client->irq) {
28e3427824ccc8 Martin Fuzzey         2015-06-01  1664           ret = 
devm_request_threaded_irq(&client->dev,
28e3427824ccc8 Martin Fuzzey         2015-06-01  1665                           
                client->irq,
28e3427824ccc8 Martin Fuzzey         2015-06-01  1666                           
                NULL, mma8452_interrupt,
28e3427824ccc8 Martin Fuzzey         2015-06-01  1667                           
                IRQF_TRIGGER_LOW | IRQF_ONESHOT,
28e3427824ccc8 Martin Fuzzey         2015-06-01  1668                           
                client->name, indio_dev);
28e3427824ccc8 Martin Fuzzey         2015-06-01  1669           if (ret)
28e3427824ccc8 Martin Fuzzey         2015-06-01  1670                   goto 
buffer_cleanup;
28e3427824ccc8 Martin Fuzzey         2015-06-01  1671   }
28e3427824ccc8 Martin Fuzzey         2015-06-01  1672  
96c0cb2bbfe0a5 Martin Kepplinger     2016-03-03  1673   ret = 
pm_runtime_set_active(&client->dev);
96c0cb2bbfe0a5 Martin Kepplinger     2016-03-03  1674   if (ret < 0)
96c0cb2bbfe0a5 Martin Kepplinger     2016-03-03  1675           goto 
buffer_cleanup;
96c0cb2bbfe0a5 Martin Kepplinger     2016-03-03  1676  
96c0cb2bbfe0a5 Martin Kepplinger     2016-03-03  1677   
pm_runtime_enable(&client->dev);
96c0cb2bbfe0a5 Martin Kepplinger     2016-03-03  1678   
pm_runtime_set_autosuspend_delay(&client->dev,
96c0cb2bbfe0a5 Martin Kepplinger     2016-03-03  1679                           
         MMA8452_AUTO_SUSPEND_DELAY_MS);
96c0cb2bbfe0a5 Martin Kepplinger     2016-03-03  1680   
pm_runtime_use_autosuspend(&client->dev);
96c0cb2bbfe0a5 Martin Kepplinger     2016-03-03  1681  
c7eeea93ac60ab Peter Meerwald        2014-02-05  1682   ret = 
iio_device_register(indio_dev);
c7eeea93ac60ab Peter Meerwald        2014-02-05  1683   if (ret < 0)
c7eeea93ac60ab Peter Meerwald        2014-02-05  1684           goto 
buffer_cleanup;
28e3427824ccc8 Martin Fuzzey         2015-06-01  1685  
4b04266abe3ea0 Martin Kepplinger     2016-01-16  1686   ret = 
mma8452_set_freefall_mode(data, false);
1a965d405fc6f6 Bijosh Thykkoottathil 2016-07-04  1687   if (ret < 0)
d7369ae1f4d7cf Chuhong Yuan          2020-05-28  1688           goto 
unregister_device;
4b04266abe3ea0 Martin Kepplinger     2016-01-16  1689  
c7eeea93ac60ab Peter Meerwald        2014-02-05  1690   return 0;
c7eeea93ac60ab Peter Meerwald        2014-02-05  1691  
d7369ae1f4d7cf Chuhong Yuan          2020-05-28  1692  unregister_device:
d7369ae1f4d7cf Chuhong Yuan          2020-05-28  1693   
iio_device_unregister(indio_dev);
d7369ae1f4d7cf Chuhong Yuan          2020-05-28  1694  
c7eeea93ac60ab Peter Meerwald        2014-02-05  1695  buffer_cleanup:
c7eeea93ac60ab Peter Meerwald        2014-02-05  1696   
iio_triggered_buffer_cleanup(indio_dev);
ae6d9ce05691bf Martin Fuzzey         2015-06-01  1697  
ae6d9ce05691bf Martin Fuzzey         2015-06-01  1698  trigger_cleanup:
ae6d9ce05691bf Martin Fuzzey         2015-06-01  1699   
mma8452_trigger_cleanup(indio_dev);
ae6d9ce05691bf Martin Fuzzey         2015-06-01  1700  
f6ff49b8a3b6f7 Anson Huang           2019-01-08  1701  disable_regulators:
f6ff49b8a3b6f7 Anson Huang           2019-01-08  1702   
regulator_disable(data->vddio_reg);
f6ff49b8a3b6f7 Anson Huang           2019-01-08  1703  
f6ff49b8a3b6f7 Anson Huang           2019-01-08  1704  disable_regulator_vdd:
f6ff49b8a3b6f7 Anson Huang           2019-01-08  1705   
regulator_disable(data->vdd_reg);
f6ff49b8a3b6f7 Anson Huang           2019-01-08  1706  
c7eeea93ac60ab Peter Meerwald        2014-02-05  1707   return ret;
c7eeea93ac60ab Peter Meerwald        2014-02-05  1708  }
c7eeea93ac60ab Peter Meerwald        2014-02-05  1709  

:::::: The code at line 1595 was first introduced by commit
:::::: c7eeea93ac60aba3c037af8933a7ffc96ccd495c iio: Add Freescale MMA8452Q 
3-axis accelerometer driver

:::::: TO: Peter Meerwald <[email protected]>
:::::: CC: Jonathan Cameron <[email protected]>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to