gpio: reduce the functionality of validate_desc()
authorBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Wed, 24 Jan 2024 20:22:19 +0000 (21:22 +0100)
committerBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Mon, 12 Feb 2024 09:51:20 +0000 (10:51 +0100)
Checking desc->gdev->chip for NULL without holding it in place with some
serializing mechanism is pointless. Remove this check. Also don't check
desc->gdev for NULL as it can never happen. We'll be protecting
gdev->chip with SRCU soon but we will provide a dedicated, automatic
class for that.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Acked-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
drivers/gpio/gpiolib.c

index 9fc9cfac7081c6cbae0bcb0c60bafa3681c00839..5db3ed29dae68bd7ea74c4d6b596a5e0222a0bf5 100644 (file)
@@ -2257,19 +2257,12 @@ static int validate_desc(const struct gpio_desc *desc, const char *func)
 {
        if (!desc)
                return 0;
+
        if (IS_ERR(desc)) {
                pr_warn("%s: invalid GPIO (errorpointer)\n", func);
                return PTR_ERR(desc);
        }
-       if (!desc->gdev) {
-               pr_warn("%s: invalid GPIO (no device)\n", func);
-               return -EINVAL;
-       }
-       if (!desc->gdev->chip) {
-               dev_warn(&desc->gdev->dev,
-                        "%s: backing chip is gone\n", func);
-               return 0;
-       }
+
        return 1;
 }
 
@@ -2345,12 +2338,7 @@ static bool gpiod_free_commit(struct gpio_desc *desc)
 
 void gpiod_free(struct gpio_desc *desc)
 {
-       /*
-        * We must not use VALIDATE_DESC_VOID() as the underlying gdev->chip
-        * may already be NULL but we still want to put the references.
-        */
-       if (!desc)
-               return;
+       VALIDATE_DESC_VOID(desc);
 
        if (!gpiod_free_commit(desc))
                WARN_ON(1);