| From: Kenth Eriksson <kenth.eriksson@transmode.com> |
| Date: Fri, 30 Mar 2012 17:05:30 +0200 |
| Subject: [PATCH] spi/mpc83xx: fix NULL pdata dereference bug |
| |
| commit 5039a86973cd35bdb2f64d28ee12f13fe2bb5a4c upstream. |
| |
| Commit 178db7d3, "spi: Fix device unregistration when unregistering |
| the bus master", changed device initialization to be children of the |
| bus master, not children of the bus masters parent device. The pdata |
| pointer used in fsl_spi_chipselect must updated to reflect the changed |
| initialization. |
| |
| Signed-off-by: Kenth Eriksson <kenth.eriksson@transmode.com> |
| Acked-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se> |
| Signed-off-by: Grant Likely <grant.likely@secretlab.ca> |
| Signed-off-by: Ben Hutchings <ben@decadent.org.uk> |
| --- |
| drivers/spi/spi-fsl-spi.c | 4 +++- |
| 1 file changed, 3 insertions(+), 1 deletion(-) |
| |
| diff --git a/drivers/spi/spi-fsl-spi.c b/drivers/spi/spi-fsl-spi.c |
| index 24cacff..5f748c0 100644 |
| --- a/drivers/spi/spi-fsl-spi.c |
| +++ b/drivers/spi/spi-fsl-spi.c |
| @@ -139,10 +139,12 @@ static void fsl_spi_change_mode(struct spi_device *spi) |
| static void fsl_spi_chipselect(struct spi_device *spi, int value) |
| { |
| struct mpc8xxx_spi *mpc8xxx_spi = spi_master_get_devdata(spi->master); |
| - struct fsl_spi_platform_data *pdata = spi->dev.parent->platform_data; |
| + struct fsl_spi_platform_data *pdata; |
| bool pol = spi->mode & SPI_CS_HIGH; |
| struct spi_mpc8xxx_cs *cs = spi->controller_state; |
| |
| + pdata = spi->dev.parent->parent->platform_data; |
| + |
| if (value == BITBANG_CS_INACTIVE) { |
| if (pdata->cs_control) |
| pdata->cs_control(spi, !pol); |
| -- |
| 1.7.10 |
| |