Re: [PATCH v2 2/3] iio: humidity: dht11: Emit error messages for probe failures

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Input]     [Linux Kernel]     [Linux SCSI]     [X.org]

  Powered by Linux