diff mbox series

gpio: nomadik: remove BUG_ON() in nmk_gpio_populate_chip()

Message ID ae643df0-3a3e-4270-8dbf-be390ee4b478@moroto.mountain
State New
Headers show
Series gpio: nomadik: remove BUG_ON() in nmk_gpio_populate_chip() | expand

Commit Message

Dan Carpenter March 11, 2024, 11 a.m. UTC
Using BUG_ON() is discouraged and also the check wasn't done early
enough to prevent an out of bounds access.  Check earlier and return
an error instead of calling BUG().

Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
---
 drivers/gpio/gpio-nomadik.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

Comments

Linus Walleij March 12, 2024, 11:52 a.m. UTC | #1
On Mon, Mar 11, 2024 at 12:00 PM Dan Carpenter <dan.carpenter@linaro.org> wrote:

> Using BUG_ON() is discouraged and also the check wasn't done early
> enough to prevent an out of bounds access.  Check earlier and return
> an error instead of calling BUG().
>
> Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>

Thanks Dan, I applied the patch to the pin control tree since the
rest of the stuff is resting there and Bartosz already sent his pull
request.

Yours,
Linus Walleij
Bartosz Golaszewski March 12, 2024, 12:14 p.m. UTC | #2
On Tue, Mar 12, 2024 at 12:52 PM Linus Walleij <linus.walleij@linaro.org> wrote:
>
> On Mon, Mar 11, 2024 at 12:00 PM Dan Carpenter <dan.carpenter@linaro.org> wrote:
>
> > Using BUG_ON() is discouraged and also the check wasn't done early
> > enough to prevent an out of bounds access.  Check earlier and return
> > an error instead of calling BUG().
> >
> > Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
>
> Thanks Dan, I applied the patch to the pin control tree since the
> rest of the stuff is resting there and Bartosz already sent his pull
> request.
>

Yes I did. There were no conflicts in next with nomadik updates so I
figured you'll just send it yourself. Let me know if you need anything
from my side.

Bart
diff mbox series

Patch

diff --git a/drivers/gpio/gpio-nomadik.c b/drivers/gpio/gpio-nomadik.c
index 463a765620dc..5e2f9b51ece3 100644
--- a/drivers/gpio/gpio-nomadik.c
+++ b/drivers/gpio/gpio-nomadik.c
@@ -533,6 +533,11 @@  struct nmk_gpio_chip *nmk_gpio_populate_chip(struct fwnode_handle *fwnode,
 	}
 
 #ifdef CONFIG_PINCTRL_NOMADIK
+	if (id >= ARRAY_SIZE(nmk_gpio_chips)) {
+		dev_err(dev, "populate: invalid id: %u\n", id);
+		platform_device_put(gpio_pdev);
+		return ERR_PTR(-EINVAL);
+	}
 	/* Already populated? */
 	nmk_chip = nmk_gpio_chips[id];
 	if (nmk_chip) {
@@ -606,7 +611,6 @@  struct nmk_gpio_chip *nmk_gpio_populate_chip(struct fwnode_handle *fwnode,
 	}
 
 #ifdef CONFIG_PINCTRL_NOMADIK
-	BUG_ON(nmk_chip->bank >= ARRAY_SIZE(nmk_gpio_chips));
 	nmk_gpio_chips[id] = nmk_chip;
 #endif
 	return nmk_chip;