Re: FAILED: patch "[PATCH] gpio: mcp23s08: Bug fix of SPI device tree registration." failed to apply to 3.14-stable tree

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

 



Recently my patch was found to be a duplicated in the gpio
tree during a manual merge with linux-next.

The patch was similar but not identical and it was smoothed out by Stephen
Rothwell.

Though I did found a bit of redundant code in the Linux next version.

https://lkml.org/lkml/2014/5/28/197

I am willing to recreate the patch but I am wondering if I should
model it after my original patch or after the merged version in
linux-next.

Suggestions?

On Wed, Jun 04, 2014 at 03:55:50PM -0700, gregkh@xxxxxxxxxxxxxxxxxxx wrote:
> 
> The patch below does not apply to the 3.14-stable tree.
> If someone wants it applied there, or to any other stable or longterm
> tree, then please email the backport, including the original git commit
> id to <stable@xxxxxxxxxxxxxxx>.
> 
> thanks,
> 
> greg k-h
> 
> ------------------ original commit in Linus's tree ------------------
> 
> >From 99e4b98dbe3ad1fe38a74d12c3b8d44a55930de4 Mon Sep 17 00:00:00 2001
> From: Michael Welling <mwelling@xxxxxxxx>
> Date: Wed, 16 Apr 2014 20:00:24 -0500
> Subject: [PATCH] gpio: mcp23s08: Bug fix of SPI device tree registration.
> 
> The chips variable needs to be incremented for each chip that is
> found in the spi_present_mask when registering via device tree.
> Without this and the checking a negative index is passed to the
> data->chip array in a subsequent loop.
> 
> Cc: stable@xxxxxxxxxxxxxxx
> Signed-off-by: Michael Welling <mwelling@xxxxxxxx>
> Acked-by: Peter Korsgaard <peter@xxxxxxxxxxxxx>
> Signed-off-by: Linus Walleij <linus.walleij@xxxxxxxxxx>
> 
> diff --git a/drivers/gpio/gpio-mcp23s08.c b/drivers/gpio/gpio-mcp23s08.c
> index 99a68310e7c0..3d53fd6880d1 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)
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]