]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
gpio: davinci: fix IRQ domain leak on devm_kzalloc failure
authorQingshuang Fu <fuqingshuang@kylinos.cn>
Tue, 23 Jun 2026 02:31:06 +0000 (10:31 +0800)
committerBartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Tue, 23 Jun 2026 08:44:29 +0000 (10:44 +0200)
In davinci_gpio_irq_setup(), after successfully creating an IRQ domain
with irq_domain_create_legacy(), a subsequent devm_kzalloc() failure
in the bank loop causes the function to return -ENOMEM without
removing the IRQ domain.

Unlike devm-managed resources, irq_domain_create_legacy() does not
auto-clean up on probe failure, so the domain is leaked.

Fix by calling irq_domain_remove() before returning on allocation
failure.

Fixes: b5cf3fd827d2 ("gpio: davinci: Redesign driver to accommodate ngpios in one gpio chip")
Signed-off-by: Qingshuang Fu <fuqingshuang@kylinos.cn>
Link: https://patch.msgid.link/20260623023106.117229-1-fffsqian@163.com
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
drivers/gpio/gpio-davinci.c

index 97780f27ce5b5617eed649c08ad5500f50594b39..270cd7c8881203640d05c29724ab398addcbcce3 100644 (file)
@@ -568,8 +568,10 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
                                       sizeof(struct
                                              davinci_gpio_irq_data),
                                              GFP_KERNEL);
-               if (!irqdata)
+               if (!irqdata) {
+                       irq_domain_remove(chips->irq_domain);
                        return -ENOMEM;
+               }
 
                irqdata->regs = g;
                irqdata->bank_num = bank;