diff options
| author | Daniel McCarthy <daniel@dragonzap.com> | 2026-06-18 01:04:51 +0300 |
|---|---|---|
| committer | Linus Walleij <linusw@kernel.org> | 2026-06-30 15:24:38 +0200 |
| commit | 32711f77db0641e57fd96fdc013bf1286b9f2514 (patch) | |
| tree | 85da6790b673e9743af6dfcab9f7e7ca2f9ff6a7 | |
| parent | 7a8a6e1cfcb69cdd5b353e6ac222b4294006e108 (diff) | |
| download | linux-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.c | 1 |
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); } |
