GPIO range check in drivers/of/gpio.c
Grant Likely
grant.likely at secretlab.ca
Tue Apr 3 11:37:58 EDT 2012
On Tue, 03 Apr 2012 10:32:16 +0200, Roland Stigge <stigge at antcom.de> wrote:
> Hi,
>
> I'm wondering about a range check in drivers/of/gpio.c:144:
>
> > int of_gpio_simple_xlate(struct gpio_chip *gc,
> > const struct of_phandle_args *gpiospec, u32 *flags)
> > {
> > /*
> > * We're discouraging gpio_cells < 2, since that way you'll have to
> > * write your own xlate function (that will have to retrive the GPIO
> > * number and the flags from a single gpio cell -- this is possible,
> > * but not recommended).
> > */
> > if (gc->of_gpio_n_cells < 2) {
> > WARN_ON(1);
> > return -EINVAL;
> > }
> >
> > if (WARN_ON(gpiospec->args_count < gc->of_gpio_n_cells))
> > return -EINVAL;
> >
> > if (gpiospec->args[0] > gc->ngpio)
> > return -EINVAL;
>
> Shouldn't this be rather:
>
> if (gpiospec->args[0] >= gc->ngpio)
Yes, I think you're right. Can you craft, test and post a patch?
Thanks,
g.
More information about the linux-arm-kernel
mailing list