On Mon, Jul 18, 2022 at 9:50 PM Uwe Kleine-König <ukleinek@xxxxxxxxxx> wrote: > > There are two exit points in the driver's probe function that fail > silently. From a user perspective this is unsatisfactory because the > device is unusable but there is no hint in the kernel log about the > actual problem which makes it unnecessarily hard to fix the problem. > > Make use of dev_err_probe() to emit a problem indication which also does > the right thing if requesting the gpio return -EPROBE_DEFER. After addressing the comment, Reviewed-by: Andy Shevchenko <andy.shevchenko@xxxxxxxxx> > Signed-off-by: Uwe Kleine-König <ukleinek@xxxxxxxxxx> > --- > Changes since (implicit) v1: > > - Make it actually compile. (It helps quite a lot to have the driver to > be tested enabled in the config when doing compile tests *sigh*) > - Fix a typo I added when manually splitting the original patch > > drivers/iio/humidity/dht11.c | 10 ++++++++-- > 1 file changed, 8 insertions(+), 2 deletions(-) > > diff --git a/drivers/iio/humidity/dht11.c b/drivers/iio/humidity/dht11.c > index 891b6bf0b4ca..0db4f7471319 100644 > --- a/drivers/iio/humidity/dht11.c > +++ b/drivers/iio/humidity/dht11.c > @@ -293,6 +293,7 @@ static int dht11_probe(struct platform_device *pdev) > struct device *dev = &pdev->dev; > struct dht11 *dht11; > struct iio_dev *iio; > + int ret; > > iio = devm_iio_device_alloc(dev, sizeof(*dht11)); > if (!iio) > @@ -302,7 +303,8 @@ static int dht11_probe(struct platform_device *pdev) > dht11->dev = dev; > dht11->gpiod = devm_gpiod_get(dev, NULL, GPIOD_IN); > if (IS_ERR(dht11->gpiod)) > - return PTR_ERR(dht11->gpiod); > + return dev_err_probe(dev, PTR_ERR(dht11->gpiod), > + "Failed to acquire GPIO\n"); > > dht11->irq = gpiod_to_irq(dht11->gpiod); > if (dht11->irq < 0) { > @@ -323,7 +325,11 @@ static int dht11_probe(struct platform_device *pdev) > iio->channels = dht11_chan_spec; > iio->num_channels = ARRAY_SIZE(dht11_chan_spec); > > - return devm_iio_device_register(dev, iio); > + ret = devm_iio_device_register(dev, iio); > + if (ret < 0) > + return dev_err_probe(dev, ret, "Failed to register iio device\n"); > + > + return 0; > } > > static struct platform_driver dht11_driver = { > -- > 2.36.1 > -- With Best Regards, Andy Shevchenko