ret = gb_gpio_controller_setup(gb_gpio_controller);
if (ret)
- goto out_err;
+ goto err_free_controller;
irqc = &gb_gpio_controller->irqc;
irqc->irq_ack = gb_gpio_ack_irq;
ret = gpiochip_add(gpio);
if (ret) {
pr_err("Failed to register GPIO\n");
- goto out_err;
+ goto err_free_lines;
}
ret = gb_gpio_irqchip_add(gpio, irqc, 0,
irqchip_err:
gb_gpiochip_remove(gpio);
-out_err:
+err_free_lines:
+ kfree(gb_gpio_controller->lines);
+err_free_controller:
kfree(gb_gpio_controller);
return ret;
}
gb_gpio_irqchip_remove(gb_gpio_controller);
gb_gpiochip_remove(&gb_gpio_controller->chip);
/* kref_put(gb_gpio_controller->connection) */
+ kfree(gb_gpio_controller->lines);
kfree(gb_gpio_controller);
}