summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel McCarthy <daniel@dragonzap.com>2026-06-18 01:04:51 +0300
committerLinus Walleij <linusw@kernel.org>2026-06-30 15:24:38 +0200
commit32711f77db0641e57fd96fdc013bf1286b9f2514 (patch)
tree85da6790b673e9743af6dfcab9f7e7ca2f9ff6a7
parent7a8a6e1cfcb69cdd5b353e6ac222b4294006e108 (diff)
downloadlinux-stable-32711f77db0641e57fd96fdc013bf1286b9f2514.tar.gz
linux-stable-32711f77db0641e57fd96fdc013bf1286b9f2514.zip
pinctrl: bcm2835: Don't remove an unregistered GPIO chip
If the devm_pinctrl_register() function fails, bcm2835_pinctrl_probe() calls gpiochip_remove() before gpiochip_add_data() has registered the GPIO chip. This means that upon failure the gpio_chip.gpiodev is NULL resulting in a null pointer dereference inside the gpiochip_remove() function. Remove the unnecessary function call to gpiochip_remove(). No GPIO cleanup is required because the GPIO chip has not yet been registered. Without this change there is potential for a kernel panic upon registration failure Fixes: 266423e60ea1 ("pinctrl: bcm2835: Change init order for gpio hogs") Signed-off-by: Daniel McCarthy <daniel@dragonzap.com> Signed-off-by: Linus Walleij <linusw@kernel.org>
-rw-r--r--drivers/pinctrl/bcm/pinctrl-bcm2835.c1
1 files changed, 0 insertions, 1 deletions
diff --git a/drivers/pinctrl/bcm/pinctrl-bcm2835.c b/drivers/pinctrl/bcm/pinctrl-bcm2835.c
index e7b35019a5a7..725e880ae086 100644
--- a/drivers/pinctrl/bcm/pinctrl-bcm2835.c
+++ b/drivers/pinctrl/bcm/pinctrl-bcm2835.c
@@ -1350,7 +1350,6 @@ static int bcm2835_pinctrl_probe(struct platform_device *pdev)
pc->pctl_desc = *pdata->pctl_desc;
pc->pctl_dev = devm_pinctrl_register(dev, &pc->pctl_desc, pc);
if (IS_ERR(pc->pctl_dev)) {
- gpiochip_remove(&pc->gpio_chip);
return PTR_ERR(pc->pctl_dev);
}