diff options
author | Daniel Ribeiro <drwyrm@gmail.com> | 2009-05-12 16:19:36 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-05-12 17:11:34 -0400 |
commit | 7348d82a67b3fe0363e7f0679b50ecbdc65116c7 (patch) | |
tree | ed0f3029a4eaf8b2ec6149214f2191390ff2c377 /drivers/spi | |
parent | 816dc3c82b34f709dc1c29ea0a6f417d739a3487 (diff) |
pxa2xx_spi: prevent panic case setup() fails
setup() may fail before ctldata is set, causing a kernel panic on
cleanup().
Signed-off-by: Daniel Ribeiro <drwyrm@gmail.com>
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Cc: Eric Miao <eric.y.miao@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/spi')
-rw-r--r-- | drivers/spi/pxa2xx_spi.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/spi/pxa2xx_spi.c b/drivers/spi/pxa2xx_spi.c index 885194a07418..3f3c08c6ba4e 100644 --- a/drivers/spi/pxa2xx_spi.c +++ b/drivers/spi/pxa2xx_spi.c | |||
@@ -1373,6 +1373,9 @@ static void cleanup(struct spi_device *spi) | |||
1373 | { | 1373 | { |
1374 | struct chip_data *chip = spi_get_ctldata(spi); | 1374 | struct chip_data *chip = spi_get_ctldata(spi); |
1375 | 1375 | ||
1376 | if (!chip) | ||
1377 | return; | ||
1378 | |||
1376 | if (gpio_is_valid(chip->gpio_cs)) | 1379 | if (gpio_is_valid(chip->gpio_cs)) |
1377 | gpio_free(chip->gpio_cs); | 1380 | gpio_free(chip->gpio_cs); |
1378 | 1381 | ||