Re: [PATCH] gpio: mcp23s08: Bug fix of SPI device tree registration.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 <mwelling@xxxxxxxx> 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 <mwelling@xxxxxxxx>
> ---
>  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 majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux SPI]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux