BCC: l...@intel.com
CC: kbuild-...@lists.01.org
CC: linux-ker...@vger.kernel.org
TO: Vadim Pasternak <vad...@nvidia.com>
CC: Hans de Goede <hdego...@redhat.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   2ae08b36c06ea8df73a79f6b80ff7964e006e9e3
commit: b4b830a34d8046633231b7fe87f6f2cb6240dc9f platform/mellanox: mlxreg-lc: 
Fix error flow and extend verbosity
date:   2 weeks ago
:::::: branch date: 4 hours ago
:::::: commit date: 2 weeks ago
config: x86_64-randconfig-m001 
(https://download.01.org/0day-ci/archive/20220812/202208120443.eh0phntz-...@intel.com/config)
compiler: gcc-11 (Debian 11.3.0-3) 11.3.0

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <l...@intel.com>
Reported-by: Dan Carpenter <dan.carpen...@oracle.com>

smatch warnings:
drivers/platform/mellanox/mlxreg-lc.c:866 mlxreg_lc_probe() warn: passing zero 
to 'PTR_ERR'

vim +/PTR_ERR +866 drivers/platform/mellanox/mlxreg-lc.c

62f9529b8d5c87 Vadim Pasternak 2021-10-02  798  
62f9529b8d5c87 Vadim Pasternak 2021-10-02  799  static int 
mlxreg_lc_probe(struct platform_device *pdev)
62f9529b8d5c87 Vadim Pasternak 2021-10-02  800  {
62f9529b8d5c87 Vadim Pasternak 2021-10-02  801          struct 
mlxreg_core_hotplug_platform_data *par_pdata;
62f9529b8d5c87 Vadim Pasternak 2021-10-02  802          struct mlxreg_core_data 
*data;
62f9529b8d5c87 Vadim Pasternak 2021-10-02  803          struct mlxreg_lc 
*mlxreg_lc;
62f9529b8d5c87 Vadim Pasternak 2021-10-02  804          void *regmap;
62f9529b8d5c87 Vadim Pasternak 2021-10-02  805          int i, err;
62f9529b8d5c87 Vadim Pasternak 2021-10-02  806  
62f9529b8d5c87 Vadim Pasternak 2021-10-02  807          data = 
dev_get_platdata(&pdev->dev);
62f9529b8d5c87 Vadim Pasternak 2021-10-02  808          if (!data)
62f9529b8d5c87 Vadim Pasternak 2021-10-02  809                  return -EINVAL;
62f9529b8d5c87 Vadim Pasternak 2021-10-02  810  
62f9529b8d5c87 Vadim Pasternak 2021-10-02  811          mlxreg_lc = 
devm_kzalloc(&pdev->dev, sizeof(*mlxreg_lc), GFP_KERNEL);
62f9529b8d5c87 Vadim Pasternak 2021-10-02  812          if (!mlxreg_lc)
62f9529b8d5c87 Vadim Pasternak 2021-10-02  813                  return -ENOMEM;
62f9529b8d5c87 Vadim Pasternak 2021-10-02  814  
62f9529b8d5c87 Vadim Pasternak 2021-10-02  815          
mutex_init(&mlxreg_lc->lock);
62f9529b8d5c87 Vadim Pasternak 2021-10-02  816          /* Set event 
notification callback. */
62f9529b8d5c87 Vadim Pasternak 2021-10-02  817          if (data->notifier) {
62f9529b8d5c87 Vadim Pasternak 2021-10-02  818                  
data->notifier->user_handler = mlxreg_lc_event_handler;
62f9529b8d5c87 Vadim Pasternak 2021-10-02  819                  
data->notifier->handle = mlxreg_lc;
62f9529b8d5c87 Vadim Pasternak 2021-10-02  820          }
62f9529b8d5c87 Vadim Pasternak 2021-10-02  821          data->hpdev.adapter = 
i2c_get_adapter(data->hpdev.nr);
62f9529b8d5c87 Vadim Pasternak 2021-10-02  822          if 
(!data->hpdev.adapter) {
62f9529b8d5c87 Vadim Pasternak 2021-10-02  823                  
dev_err(&pdev->dev, "Failed to get adapter for bus %d\n",
62f9529b8d5c87 Vadim Pasternak 2021-10-02  824                          
data->hpdev.nr);
b4b830a34d8046 Vadim Pasternak 2022-07-19  825                  err = -EFAULT;
b4b830a34d8046 Vadim Pasternak 2022-07-19  826                  goto 
i2c_get_adapter_fail;
62f9529b8d5c87 Vadim Pasternak 2021-10-02  827          }
62f9529b8d5c87 Vadim Pasternak 2021-10-02  828  
62f9529b8d5c87 Vadim Pasternak 2021-10-02  829          /* Create device at the 
top of line card I2C tree.*/
62f9529b8d5c87 Vadim Pasternak 2021-10-02  830          data->hpdev.client = 
i2c_new_client_device(data->hpdev.adapter,
62f9529b8d5c87 Vadim Pasternak 2021-10-02  831                                  
                   data->hpdev.brdinfo);
62f9529b8d5c87 Vadim Pasternak 2021-10-02  832          if 
(IS_ERR(data->hpdev.client)) {
62f9529b8d5c87 Vadim Pasternak 2021-10-02  833                  
dev_err(&pdev->dev, "Failed to create client %s at bus %d at addr 0x%02x\n",
62f9529b8d5c87 Vadim Pasternak 2021-10-02  834                          
data->hpdev.brdinfo->type, data->hpdev.nr, data->hpdev.brdinfo->addr);
b4b830a34d8046 Vadim Pasternak 2022-07-19  835                  err = 
PTR_ERR(data->hpdev.client);
b4b830a34d8046 Vadim Pasternak 2022-07-19  836                  goto 
i2c_new_device_fail;
62f9529b8d5c87 Vadim Pasternak 2021-10-02  837          }
62f9529b8d5c87 Vadim Pasternak 2021-10-02  838  
62f9529b8d5c87 Vadim Pasternak 2021-10-02  839          regmap = 
devm_regmap_init_i2c(data->hpdev.client,
62f9529b8d5c87 Vadim Pasternak 2021-10-02  840                                  
      &mlxreg_lc_regmap_conf);
62f9529b8d5c87 Vadim Pasternak 2021-10-02  841          if (IS_ERR(regmap)) {
b4b830a34d8046 Vadim Pasternak 2022-07-19  842                  
dev_err(&pdev->dev, "Failed to create regmap for client %s at bus %d at addr 
0x%02x\n",
b4b830a34d8046 Vadim Pasternak 2022-07-19  843                          
data->hpdev.brdinfo->type, data->hpdev.nr, data->hpdev.brdinfo->addr);
62f9529b8d5c87 Vadim Pasternak 2021-10-02  844                  err = 
PTR_ERR(regmap);
b4b830a34d8046 Vadim Pasternak 2022-07-19  845                  goto 
devm_regmap_init_i2c_fail;
62f9529b8d5c87 Vadim Pasternak 2021-10-02  846          }
62f9529b8d5c87 Vadim Pasternak 2021-10-02  847  
62f9529b8d5c87 Vadim Pasternak 2021-10-02  848          /* Set default 
registers. */
62f9529b8d5c87 Vadim Pasternak 2021-10-02  849          for (i = 0; i < 
mlxreg_lc_regmap_conf.num_reg_defaults; i++) {
62f9529b8d5c87 Vadim Pasternak 2021-10-02  850                  err = 
regmap_write(regmap, mlxreg_lc_regmap_default[i].reg,
62f9529b8d5c87 Vadim Pasternak 2021-10-02  851                                  
   mlxreg_lc_regmap_default[i].def);
b4b830a34d8046 Vadim Pasternak 2022-07-19  852                  if (err) {
b4b830a34d8046 Vadim Pasternak 2022-07-19  853                          
dev_err(&pdev->dev, "Failed to set default regmap %d for client %s at bus %d at 
addr 0x%02x\n",
b4b830a34d8046 Vadim Pasternak 2022-07-19  854                                  
i, data->hpdev.brdinfo->type, data->hpdev.nr,
b4b830a34d8046 Vadim Pasternak 2022-07-19  855                                  
data->hpdev.brdinfo->addr);
b4b830a34d8046 Vadim Pasternak 2022-07-19  856                          goto 
regmap_write_fail;
b4b830a34d8046 Vadim Pasternak 2022-07-19  857                  }
62f9529b8d5c87 Vadim Pasternak 2021-10-02  858          }
62f9529b8d5c87 Vadim Pasternak 2021-10-02  859  
62f9529b8d5c87 Vadim Pasternak 2021-10-02  860          /* Sync registers with 
hardware. */
62f9529b8d5c87 Vadim Pasternak 2021-10-02  861          
regcache_mark_dirty(regmap);
62f9529b8d5c87 Vadim Pasternak 2021-10-02  862          err = 
regcache_sync(regmap);
b4b830a34d8046 Vadim Pasternak 2022-07-19  863          if (err) {
b4b830a34d8046 Vadim Pasternak 2022-07-19  864                  
dev_err(&pdev->dev, "Failed to sync regmap for client %s at bus %d at addr 
0x%02x\n",
b4b830a34d8046 Vadim Pasternak 2022-07-19  865                          
data->hpdev.brdinfo->type, data->hpdev.nr, data->hpdev.brdinfo->addr);
b4b830a34d8046 Vadim Pasternak 2022-07-19 @866                  err = 
PTR_ERR(regmap);
b4b830a34d8046 Vadim Pasternak 2022-07-19  867                  goto 
regcache_sync_fail;
b4b830a34d8046 Vadim Pasternak 2022-07-19  868          }
62f9529b8d5c87 Vadim Pasternak 2021-10-02  869  
62f9529b8d5c87 Vadim Pasternak 2021-10-02  870          par_pdata = 
data->hpdev.brdinfo->platform_data;
62f9529b8d5c87 Vadim Pasternak 2021-10-02  871          mlxreg_lc->par_regmap = 
par_pdata->regmap;
62f9529b8d5c87 Vadim Pasternak 2021-10-02  872          mlxreg_lc->data = data;
62f9529b8d5c87 Vadim Pasternak 2021-10-02  873          mlxreg_lc->dev = 
&pdev->dev;
62f9529b8d5c87 Vadim Pasternak 2021-10-02  874          
platform_set_drvdata(pdev, mlxreg_lc);
62f9529b8d5c87 Vadim Pasternak 2021-10-02  875  
62f9529b8d5c87 Vadim Pasternak 2021-10-02  876          /* Configure line card. 
*/
62f9529b8d5c87 Vadim Pasternak 2021-10-02  877          err = 
mlxreg_lc_config_init(mlxreg_lc, regmap, data);
62f9529b8d5c87 Vadim Pasternak 2021-10-02  878          if (err)
b4b830a34d8046 Vadim Pasternak 2022-07-19  879                  goto 
mlxreg_lc_config_init_fail;
62f9529b8d5c87 Vadim Pasternak 2021-10-02  880  
62f9529b8d5c87 Vadim Pasternak 2021-10-02  881          return err;
62f9529b8d5c87 Vadim Pasternak 2021-10-02  882  
b4b830a34d8046 Vadim Pasternak 2022-07-19  883  mlxreg_lc_config_init_fail:
b4b830a34d8046 Vadim Pasternak 2022-07-19  884  regcache_sync_fail:
b4b830a34d8046 Vadim Pasternak 2022-07-19  885  regmap_write_fail:
b4b830a34d8046 Vadim Pasternak 2022-07-19  886  devm_regmap_init_i2c_fail:
b4b830a34d8046 Vadim Pasternak 2022-07-19  887          if (data->hpdev.client) 
{
b4b830a34d8046 Vadim Pasternak 2022-07-19  888                  
i2c_unregister_device(data->hpdev.client);
b4b830a34d8046 Vadim Pasternak 2022-07-19  889                  
data->hpdev.client = NULL;
b4b830a34d8046 Vadim Pasternak 2022-07-19  890          }
b4b830a34d8046 Vadim Pasternak 2022-07-19  891  i2c_new_device_fail:
62f9529b8d5c87 Vadim Pasternak 2021-10-02  892          
i2c_put_adapter(data->hpdev.adapter);
b4b830a34d8046 Vadim Pasternak 2022-07-19  893          data->hpdev.adapter = 
NULL;
b4b830a34d8046 Vadim Pasternak 2022-07-19  894  i2c_get_adapter_fail:
b4b830a34d8046 Vadim Pasternak 2022-07-19  895          /* Clear event 
notification callback and handle. */
b4b830a34d8046 Vadim Pasternak 2022-07-19  896          if (data->notifier) {
b4b830a34d8046 Vadim Pasternak 2022-07-19  897                  
data->notifier->user_handler = NULL;
b4b830a34d8046 Vadim Pasternak 2022-07-19  898                  
data->notifier->handle = NULL;
b4b830a34d8046 Vadim Pasternak 2022-07-19  899          }
62f9529b8d5c87 Vadim Pasternak 2021-10-02  900          return err;
62f9529b8d5c87 Vadim Pasternak 2021-10-02  901  }
62f9529b8d5c87 Vadim Pasternak 2021-10-02  902  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp
_______________________________________________
kbuild mailing list -- kbuild@lists.01.org
To unsubscribe send an email to kbuild-le...@lists.01.org

Reply via email to