mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] gpio: mvebu: validate ngpios before use
@ 2026-07-07 23:27 Rosen Penev
  2026-07-08 12:06 ` Bartosz Golaszewski
  0 siblings, 1 reply; 4+ messages in thread
From: Rosen Penev @ 2026-07-07 23:27 UTC (permalink / raw)
  To: linux-gpio
  Cc: Linus Walleij, Bartosz Golaszewski, Arnd Bergmann, Jason Cooper,
	Thomas Petazzoni, open list

If ngpios is read as 0 from device tree, it is passed via
irq_alloc_domain_generic_chips() as irqs_per_chip, which leads to a
division by zero in DIV_ROUND_UP(d->revmap_size, irqs_per_chip).
Reject ngpios == 0 early.

Fixes: fefe7b0923459 ("gpio: introduce gpio-mvebu driver for Marvell SoCs")
Assisted-by: opencode:big-pickle
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
 drivers/gpio/gpio-mvebu.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/gpio/gpio-mvebu.c b/drivers/gpio/gpio-mvebu.c
index 39c1a13e1b65..c7cbfbfb4800 100644
--- a/drivers/gpio/gpio-mvebu.c
+++ b/drivers/gpio/gpio-mvebu.c
@@ -1175,6 +1175,11 @@ static int mvebu_gpio_probe(struct platform_device *pdev)
 		return -ENODEV;
 	}
 
+	if (!ngpios) {
+		dev_err(&pdev->dev, "ngpios must be greater than 0\n");
+		return -EINVAL;
+	}
+
 	id = of_alias_get_id(pdev->dev.of_node, "gpio");
 	if (id < 0) {
 		dev_err(&pdev->dev, "Couldn't get OF id\n");
-- 
2.55.0


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] gpio: mvebu: validate ngpios before use
  2026-07-07 23:27 [PATCH] gpio: mvebu: validate ngpios before use Rosen Penev
@ 2026-07-08 12:06 ` Bartosz Golaszewski
  2026-07-08 19:18   ` Rosen Penev
  0 siblings, 1 reply; 4+ messages in thread
From: Bartosz Golaszewski @ 2026-07-08 12:06 UTC (permalink / raw)
  To: Rosen Penev
  Cc: Linus Walleij, Bartosz Golaszewski, Arnd Bergmann, Jason Cooper,
	Thomas Petazzoni, open list, linux-gpio

On Wed, 8 Jul 2026 01:27:42 +0200, Rosen Penev <rosenp@gmail.com> said:
> If ngpios is read as 0 from device tree, it is passed via
> irq_alloc_domain_generic_chips() as irqs_per_chip, which leads to a
> division by zero in DIV_ROUND_UP(d->revmap_size, irqs_per_chip).
> Reject ngpios == 0 early.
>
> Fixes: fefe7b0923459 ("gpio: introduce gpio-mvebu driver for Marvell SoCs")
> Assisted-by: opencode:big-pickle
> Signed-off-by: Rosen Penev <rosenp@gmail.com>
> ---
>  drivers/gpio/gpio-mvebu.c | 5 +++++
>  1 file changed, 5 insertions(+)
>
> diff --git a/drivers/gpio/gpio-mvebu.c b/drivers/gpio/gpio-mvebu.c
> index 39c1a13e1b65..c7cbfbfb4800 100644
> --- a/drivers/gpio/gpio-mvebu.c
> +++ b/drivers/gpio/gpio-mvebu.c
> @@ -1175,6 +1175,11 @@ static int mvebu_gpio_probe(struct platform_device *pdev)
>  		return -ENODEV;
>  	}
>
> +	if (!ngpios) {
> +		dev_err(&pdev->dev, "ngpios must be greater than 0\n");

return dev_err_probe()?

> +		return -EINVAL;
> +	}
> +
>  	id = of_alias_get_id(pdev->dev.of_node, "gpio");
>  	if (id < 0) {
>  		dev_err(&pdev->dev, "Couldn't get OF id\n");
> --
> 2.55.0
>
>

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] gpio: mvebu: validate ngpios before use
  2026-07-08 12:06 ` Bartosz Golaszewski
@ 2026-07-08 19:18   ` Rosen Penev
  2026-07-09  8:08     ` Bartosz Golaszewski
  0 siblings, 1 reply; 4+ messages in thread
From: Rosen Penev @ 2026-07-08 19:18 UTC (permalink / raw)
  To: Bartosz Golaszewski
  Cc: Linus Walleij, Arnd Bergmann, Jason Cooper, Thomas Petazzoni,
	open list, linux-gpio

On Wed, Jul 8, 2026 at 5:06 AM Bartosz Golaszewski <brgl@kernel.org> wrote:
>
> On Wed, 8 Jul 2026 01:27:42 +0200, Rosen Penev <rosenp@gmail.com> said:
> > If ngpios is read as 0 from device tree, it is passed via
> > irq_alloc_domain_generic_chips() as irqs_per_chip, which leads to a
> > division by zero in DIV_ROUND_UP(d->revmap_size, irqs_per_chip).
> > Reject ngpios == 0 early.
> >
> > Fixes: fefe7b0923459 ("gpio: introduce gpio-mvebu driver for Marvell SoCs")
> > Assisted-by: opencode:big-pickle
> > Signed-off-by: Rosen Penev <rosenp@gmail.com>
> > ---
> >  drivers/gpio/gpio-mvebu.c | 5 +++++
> >  1 file changed, 5 insertions(+)
> >
> > diff --git a/drivers/gpio/gpio-mvebu.c b/drivers/gpio/gpio-mvebu.c
> > index 39c1a13e1b65..c7cbfbfb4800 100644
> > --- a/drivers/gpio/gpio-mvebu.c
> > +++ b/drivers/gpio/gpio-mvebu.c
> > @@ -1175,6 +1175,11 @@ static int mvebu_gpio_probe(struct platform_device *pdev)
> >               return -ENODEV;
> >       }
> >
> > +     if (!ngpios) {
> > +             dev_err(&pdev->dev, "ngpios must be greater than 0\n");
Sashiko suggests upper limit bound as well.
>
> return dev_err_probe()?
surrounding code doesn't use it. dev_err_probe is mostly useful with
variable error codes anyway.
>
> > +             return -EINVAL;
> > +     }
> > +
> >       id = of_alias_get_id(pdev->dev.of_node, "gpio");
> >       if (id < 0) {
> >               dev_err(&pdev->dev, "Couldn't get OF id\n");
> > --
> > 2.55.0
> >
> >

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] gpio: mvebu: validate ngpios before use
  2026-07-08 19:18   ` Rosen Penev
@ 2026-07-09  8:08     ` Bartosz Golaszewski
  0 siblings, 0 replies; 4+ messages in thread
From: Bartosz Golaszewski @ 2026-07-09  8:08 UTC (permalink / raw)
  To: Rosen Penev
  Cc: Linus Walleij, Arnd Bergmann, Jason Cooper, Thomas Petazzoni,
	open list, linux-gpio, Bartosz Golaszewski

On Wed, 8 Jul 2026 21:18:25 +0200, Rosen Penev <rosenp@gmail.com> said:
> On Wed, Jul 8, 2026 at 5:06 AM Bartosz Golaszewski <brgl@kernel.org> wrote:
>>
>> On Wed, 8 Jul 2026 01:27:42 +0200, Rosen Penev <rosenp@gmail.com> said:
>> > If ngpios is read as 0 from device tree, it is passed via
>> > irq_alloc_domain_generic_chips() as irqs_per_chip, which leads to a
>> > division by zero in DIV_ROUND_UP(d->revmap_size, irqs_per_chip).
>> > Reject ngpios == 0 early.
>> >
>> > Fixes: fefe7b0923459 ("gpio: introduce gpio-mvebu driver for Marvell SoCs")
>> > Assisted-by: opencode:big-pickle
>> > Signed-off-by: Rosen Penev <rosenp@gmail.com>
>> > ---
>> >  drivers/gpio/gpio-mvebu.c | 5 +++++
>> >  1 file changed, 5 insertions(+)
>> >
>> > diff --git a/drivers/gpio/gpio-mvebu.c b/drivers/gpio/gpio-mvebu.c
>> > index 39c1a13e1b65..c7cbfbfb4800 100644
>> > --- a/drivers/gpio/gpio-mvebu.c
>> > +++ b/drivers/gpio/gpio-mvebu.c
>> > @@ -1175,6 +1175,11 @@ static int mvebu_gpio_probe(struct platform_device *pdev)
>> >               return -ENODEV;
>> >       }
>> >
>> > +     if (!ngpios) {
>> > +             dev_err(&pdev->dev, "ngpios must be greater than 0\n");
> Sashiko suggests upper limit bound as well.
>>
>> return dev_err_probe()?
> surrounding code doesn't use it. dev_err_probe is mostly useful with
> variable error codes anyway.

It doesn't use it becuase it didn't exist when this driver was written. If
you're touching it, you may as well use the more recent interface which saves
you a couple lines.

Bart

>>
>> > +             return -EINVAL;
>> > +     }
>> > +
>> >       id = of_alias_get_id(pdev->dev.of_node, "gpio");
>> >       if (id < 0) {
>> >               dev_err(&pdev->dev, "Couldn't get OF id\n");
>> > --
>> > 2.55.0
>> >
>> >
>

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2026-07-09  8:08 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-07-07 23:27 [PATCH] gpio: mvebu: validate ngpios before use Rosen Penev
2026-07-08 12:06 ` Bartosz Golaszewski
2026-07-08 19:18   ` Rosen Penev
2026-07-09  8:08     ` Bartosz Golaszewski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®