gpiolib: Call validate_desc() when VALIDATE_DESC() can't be used
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Wed, 16 Apr 2025 09:55:14 +0000 (12:55 +0300)
committerBartosz Golaszewski <brgl@bgdev.pl>
Thu, 17 Apr 2025 13:22:06 +0000 (15:22 +0200)
Call validate_desc() directly when VALIDATE_DESC() can't be used.
It will print additional information useful for debugging.

Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20250416095645.2027695-7-andriy.shevchenko@linux.intel.com
Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
drivers/gpio/gpiolib.c

index 297a124a5e44165fba0ebaa4916690bf5fcd9902..8a47d861d8368120aadddf91ae5191689298904b 100644 (file)
@@ -421,11 +421,8 @@ int gpiod_get_direction(struct gpio_desc *desc)
        unsigned int offset;
        int ret;
 
-       /*
-        * We cannot use VALIDATE_DESC() as we must not return 0 for a NULL
-        * descriptor like we usually do.
-        */
-       if (IS_ERR_OR_NULL(desc))
+       ret = validate_desc(desc, __func__);
+       if (ret <= 0)
                return -EINVAL;
 
        CLASS(gpio_chip_guard, guard)(desc);
@@ -3982,13 +3979,10 @@ int gpiod_to_irq(const struct gpio_desc *desc)
        struct gpio_device *gdev;
        struct gpio_chip *gc;
        int offset;
+       int ret;
 
-       /*
-        * Cannot VALIDATE_DESC() here as gpiod_to_irq() consumer semantics
-        * requires this function to not return zero on an invalid descriptor
-        * but rather a negative error number.
-        */
-       if (IS_ERR_OR_NULL(desc))
+       ret = validate_desc(desc, __func__);
+       if (ret <= 0)
                return -EINVAL;
 
        gdev = desc->gdev;