]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
gpiolib: Do not assign error pointer to the GPIO IRQ chip domain
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Wed, 21 Jun 2023 17:49:41 +0000 (20:49 +0300)
committerBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Mon, 10 Jul 2023 09:29:44 +0000 (11:29 +0200)
Check domain for being an error pointer before assigning it to
the GPIO IRQ chip domain.

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

index 796d2802ebb9afdedad3520961dc8cc89a048809..e4300b99bfa59fa68cf37209f74e5f31f56655d3 100644 (file)
@@ -1650,6 +1650,7 @@ static int gpiochip_add_irqchip(struct gpio_chip *gc,
 {
        struct fwnode_handle *fwnode = dev_fwnode(&gc->gpiodev->dev);
        struct irq_chip *irqchip = gc->irq.chip;
+       struct irq_domain *domain;
        unsigned int type;
        unsigned int i;
 
@@ -1682,14 +1683,13 @@ static int gpiochip_add_irqchip(struct gpio_chip *gc,
 
        /* If a parent irqdomain is provided, let's build a hierarchy */
        if (gpiochip_hierarchy_is_hierarchical(gc)) {
-               gc->irq.domain = gpiochip_hierarchy_create_domain(gc);
-               if (IS_ERR(gc->irq.domain))
-                       return PTR_ERR(gc->irq.domain);
+               domain = gpiochip_hierarchy_create_domain(gc);
        } else {
-               gc->irq.domain = gpiochip_simple_create_domain(gc);
-               if (IS_ERR(gc->irq.domain))
-                       return PTR_ERR(gc->irq.domain);
+               domain = gpiochip_simple_create_domain(gc);
        }
+       if (IS_ERR(domain))
+               return PTR_ERR(domain);
+       gc->irq.domain = domain;
 
        if (gc->irq.parent_handler) {
                for (i = 0; i < gc->irq.num_parents; i++) {