Daniel, Lars, Peter: can either of you have a look at this patch
and ACK/NACK it?

Yours,
Linus Walleij


On Thu, Apr 17, 2014 at 3:00 AM, Michael Welling <[email protected]> wrote:
> The chips variable needs to be incremented for each chip that is found in the
> spi_present_mask when register via device tree. Without this and the checking
> a negative index is passed to the data->chip array in a subsequent loop.
>
> Signed-off-by: Michael Welling <[email protected]>
> ---
>  drivers/gpio/gpio-mcp23s08.c |   12 +++++++-----
>  1 file changed, 7 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpio/gpio-mcp23s08.c b/drivers/gpio/gpio-mcp23s08.c
> index 99a6831..3d53fd6 100644
> --- a/drivers/gpio/gpio-mcp23s08.c
> +++ b/drivers/gpio/gpio-mcp23s08.c
> @@ -894,9 +894,11 @@ static int mcp23s08_probe(struct spi_device *spi)
>                         dev_err(&spi->dev, "invalid spi-present-mask\n");
>                         return -ENODEV;
>                 }
> -
> -               for (addr = 0; addr < ARRAY_SIZE(pdata->chip); addr++)
> +               for (addr = 0; addr < ARRAY_SIZE(pdata->chip); addr++) {
> +                       if ((spi_present_mask & (1 << addr)))
> +                               chips++;
>                         pullups[addr] = 0;
> +               }
>         } else {
>                 type = spi_get_device_id(spi)->driver_data;
>                 pdata = dev_get_platdata(&spi->dev);
> @@ -919,12 +921,12 @@ static int mcp23s08_probe(struct spi_device *spi)
>                         pullups[addr] = pdata->chip[addr].pullups;
>                 }
>
> -               if (!chips)
> -                       return -ENODEV;
> -
>                 base = pdata->base;
>         }
>
> +       if (!chips)
> +               return -ENODEV;
> +
>         data = kzalloc(sizeof(*data) + chips * sizeof(struct mcp23s08),
>                         GFP_KERNEL);
>         if (!data)
> --
> 1.7.9.5
>
--
To unsubscribe from this list: send the line "unsubscribe linux-gpio" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to