spi/omap2_mcspi: Check params before dereference or use

Check spi->chip_select for range before use.

Signed-off-by: Scott Ellis <scott@jumpnowtek.com>
Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
This commit is contained in:
Scott Ellis 2010-05-24 14:20:27 +00:00 committed by Grant Likely
parent 4743a0f88c
commit 99f1a43f43

View file

@ -834,7 +834,6 @@ static void omap2_mcspi_cleanup(struct spi_device *spi)
struct omap2_mcspi_cs *cs; struct omap2_mcspi_cs *cs;
mcspi = spi_master_get_devdata(spi->master); mcspi = spi_master_get_devdata(spi->master);
mcspi_dma = &mcspi->dma_channels[spi->chip_select];
if (spi->controller_state) { if (spi->controller_state) {
/* Unlink controller state from context save list */ /* Unlink controller state from context save list */
@ -844,6 +843,9 @@ static void omap2_mcspi_cleanup(struct spi_device *spi)
kfree(spi->controller_state); kfree(spi->controller_state);
} }
if (spi->chip_select < spi->master->num_chipselect) {
mcspi_dma = &mcspi->dma_channels[spi->chip_select];
if (mcspi_dma->dma_rx_channel != -1) { if (mcspi_dma->dma_rx_channel != -1) {
omap_free_dma(mcspi_dma->dma_rx_channel); omap_free_dma(mcspi_dma->dma_rx_channel);
mcspi_dma->dma_rx_channel = -1; mcspi_dma->dma_rx_channel = -1;
@ -853,6 +855,7 @@ static void omap2_mcspi_cleanup(struct spi_device *spi)
mcspi_dma->dma_tx_channel = -1; mcspi_dma->dma_tx_channel = -1;
} }
} }
}
static void omap2_mcspi_work(struct work_struct *work) static void omap2_mcspi_work(struct work_struct *work)
{ {