Skip to contentSkip to conversation

iio: adc: ti-adc161s626: add regulator support

bug report Dan Carpenter 2 participants 2 messages Oct 25, 2016 – Oct 28, 2016 IIO

lore
Share & tools
lore
#0 lore raw

Hello Matt Ranostay,

The patch 92f0afb5b2be: "iio: adc: ti-adc161s626: add regulator support" from Sep 18, 2016, leads to the following static checker warning:

	drivers/iio/adc/ti-adc161s626.c:237 ti_adc_probe()
	error: 'data->ref' dereferencing possible ERR_PTR()

drivers/iio/adc/ti-adc161s626.c
214
215 data->ref = devm_regulator_get(&spi->dev, "vdda");
216 if (!IS_ERR(data->ref)) {

I don't understand what's going on here.

   217                  ret = regulator_enable(data->ref);
   218                  if (ret < 0)
   219                          return ret;
   220          }
   221  
   222          ret = iio_triggered_buffer_setup(indio_dev, NULL,
   223                                           ti_adc_trigger_handler, NULL);
   224          if (ret)
   225                  goto error_regulator_disable;
   226  
   227          ret = iio_device_register(indio_dev);
   228          if (ret)
   229                  goto error_unreg_buffer;
   230  
   231          return 0;
   232  
   233  error_unreg_buffer:
   234          iio_triggered_buffer_cleanup(indio_dev);
   235  
   236  error_regulator_disable:
   237          regulator_disable(data->ref);

Static checker is correct.

238
239 return ret;
240 }

regards,
dan carpenter

#1 lore raw
Quoted 9 lines · Dan Carpenter

Hello Matt Ranostay,

The patch 92f0afb5b2be: "iio: adc: ti-adc161s626: add regulator support" from Sep 18, 2016, leads to the following static checker warning:

        drivers/iio/adc/ti-adc161s626.c:237 ti_adc_probe()
        error: 'data->ref' dereferencing possible ERR_PTR()
Quoted 6 lines

drivers/iio/adc/ti-adc161s626.c
214

   215          data->ref = devm_regulator_get(&spi->dev, "vdda");
   216          if (!IS_ERR(data->ref)) {

I don't understand what's going on here.

Ok seems weird but this is because of devm_regulator_get() returning a dummy regulator (CONFIG_REGULATOR_DUMMY) in case "vdda" isn't defined.
So no reason to enable that...

Quoted 23 lines
   217                  ret = regulator_enable(data->ref);
   218                  if (ret < 0)
   219                          return ret;
   220          }
   221
   222          ret = iio_triggered_buffer_setup(indio_dev, NULL,
   223                                           ti_adc_trigger_handler, NULL);
   224          if (ret)
   225                  goto error_regulator_disable;
   226
   227          ret = iio_device_register(indio_dev);
   228          if (ret)
   229                  goto error_unreg_buffer;
   230
   231          return 0;
   232
   233  error_unreg_buffer:
   234          iio_triggered_buffer_cleanup(indio_dev);
   235
   236  error_regulator_disable:
   237          regulator_disable(data->ref);
Quoted 1 line

Static checker is correct.

Ok that is part is probably true and maybe needs a IS_ERR check

Quoted 11 lines
   238
   239          return ret;
   240  }

regards,
dan carpenter
--
To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html