alistair23-linux/drivers/mmc/host
Seungwon Jeon 71abb13394 mmc: dw_mmc: fix error handling on response error
Even if response error is detected in case data command, data transfer
is continued. It means that data can live in FIFO. Current handling
just breaks out the request when seeing the command error. This causes
kernel panic in dw_mci_read_data_pio() [host->data = NULL]. And also,
FIFO should be guaranteed to be empty.

Unable to handle kernel NULL pointer dereference at virtual address 00000018
<...>
[<c02af814>] (dw_mci_read_data_pio+0x68/0x198) from [<c02b04b4>] (dw_mci_interrupt+0x374/0x3a0)
[<c02b04b4>] (dw_mci_interrupt+0x374/0x3a0) from [<c006b094>] (handle_irq_event_percpu+0x50/0x194)
[<c006b094>] (handle_irq_event_percpu+0x50/0x194) from [<c006b214>] (handle_irq_event+0x3c/0x5c)
[<c006b214>] (handle_irq_event+0x3c/0x5c) from [<c006de1c>] (handle_fasteoi_irq+0xa4/0x148)
[<c006de1c>] (handle_fasteoi_irq+0xa4/0x148) from [<c006aa88>] (generic_handle_irq+0x20/0x30)
[<c006aa88>] (generic_handle_irq+0x20/0x30) from [<c000f154>] (handle_IRQ+0x38/0x90)
[<c000f154>] (handle_IRQ+0x38/0x90) from [<c00085bc>] (gic_handle_irq+0x34/0x68)
[<c00085bc>] (gic_handle_irq+0x34/0x68) from [<c0011f40>] (__irq_svc+0x40/0x70)
Exception stack(0xef0b1c00 to 0xef0b1c48)
1c00: 000eb0cf ffffffff 00001300 c01a7738 ef295e10 0000000a c04df298 ef0b1dc0
1c20: ef295ec0 00000000 00000000 00000006 00000000 ef0b1c48 c02b1274 c01a7764
1c40: 20000113 ffffffff
[<c0011f40>] (__irq_svc+0x40/0x70) from 	[<c01a7764>] (__loop_delay+0x0/0xc)
Code: e1a00005 e0891006 e0662004 e12fff33 (e59a3018)
---[ end trace a7043b9ba9aed1db ]---
Kernel panic - not syncing: Fatal exception in interrupt

Signed-off-by: Seungwon Jeon <tgih.jun@samsung.com>
Tested-by: Alim Akhtar <alim.akhtar@samsung.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
2013-09-25 21:34:57 -04:00
..
android-goldfish.c mmc: remove unnecessary platform_set_drvdata() 2013-05-26 14:23:23 -04:00
atmel-mci-regs.h mmc: atmel-mci: AP700x PDC is not connected to MCI 2012-10-03 10:05:23 -04:00
atmel-mci.c mmc: atmel-mci: prepare clk before calling enable 2013-08-24 23:14:59 -04:00
au1xmmc.c mmc: remove unnecessary platform_set_drvdata() 2013-05-26 14:23:23 -04:00
bfin_sdh.c mmc: remove unnecessary platform_set_drvdata() 2013-05-26 14:23:23 -04:00
cb710-mmc.c mmc: host: use platform_{get,set}_drvdata() 2013-06-27 11:13:02 -04:00
cb710-mmc.h mmc: host: use platform_{get,set}_drvdata() 2013-06-27 11:13:02 -04:00
davinci_mmc.c MMC highlights for 3.11: 2013-07-10 11:16:00 -07:00
dw_mmc-exynos.c mmc: dw_mmc: exynos: adjust the clock rate with speed mode 2013-09-25 21:33:45 -04:00
dw_mmc-pci.c mmc: dw_mmc-pci: enable bus-mastering mode 2013-08-25 00:10:12 -04:00
dw_mmc-pltfm.c mmc: dw_mmc: move the platform specific init call 2013-09-25 21:32:40 -04:00
dw_mmc-pltfm.h mmc: remove use of __devexit 2012-11-28 12:28:18 -08:00
dw_mmc-socfpga.c mmc: dw_mmc: socfpga: move socfpga private init 2013-09-25 21:32:32 -04:00
dw_mmc.c mmc: dw_mmc: fix error handling on response error 2013-09-25 21:34:57 -04:00
dw_mmc.h mmc: dw_mmc: control card read threshold 2013-09-25 21:34:39 -04:00
jz4740_mmc.c mmc: slot-gpio: Add debouncing capability to mmc_gpio_request_cd() 2013-08-24 23:45:09 -04:00
Kconfig Remove GENERIC_HARDIRQ config option 2013-09-13 15:09:52 +02:00
Makefile mmc: host: Remove a duplicate line in Makefile 2013-08-24 22:52:19 -04:00
mmc_spi.c mmc: mmc_spi: Remove platform data .get_cd() and .get_ro() callbacks 2013-08-24 23:58:06 -04:00
mmci.c ARM: 7726/1: mmc: mmci: Add card_busy function to improve UHS card support 2013-05-23 00:09:16 +01:00
mmci.h ARM: 7726/1: mmc: mmci: Add card_busy function to improve UHS card support 2013-05-23 00:09:16 +01:00
msm_sdcc.c msm_sdcc: Convert to clk_prepare/unprepare 2013-06-24 13:06:42 -07:00
msm_sdcc.h mmc: msm_sdcc: Use MCI_INT_MASK0 for PIO interrupts 2011-10-26 15:43:37 -04:00
mvsdio.c mmc: slot-gpio: Add debouncing capability to mmc_gpio_request_cd() 2013-08-24 23:45:09 -04:00
mvsdio.h mmc: SDIO driver for Marvell SoCs 2009-03-24 21:30:03 +01:00
mxcmmc.c mmc: mxcmmc: handle mmc_of_parse() errors during probe 2013-06-27 10:23:05 -04:00
mxs-mmc.c mmc: mxs-mmc: Check the return value from stmp_reset_block() 2013-08-24 22:09:45 -04:00
of_mmc_spi.c mmc: mmc_spi: Support CD/RO GPIOs 2013-08-24 23:45:22 -04:00
omap.c mmc: omap: remove unnecessary #if 0's 2013-07-05 12:46:29 -04:00
omap_hsmmc.c mmc: omap_hsmmc: clear status flags before starting a new command 2013-08-25 15:41:17 -04:00
pxamci.c mmc: pxamci: Indicate that regulators may be absent 2013-07-31 09:56:41 +01:00
pxamci.h
rtsx_pci_sdmmc.c mmc: memstick: rtsx: Modify copyright comments 2013-08-30 14:25:10 +02:00
s3cmci.c mmc: s3cmci: moved mach/regs-sdi.h into s3cmci device driver 2013-03-05 10:42:47 +09:00
s3cmci.h s3cmci: DMA fixes 2009-10-01 16:11:15 -07:00
sdhci-acpi.c mmc: sdhci-acpi: add support for eMMC hardware reset for HID 80860F14 2013-07-05 12:46:25 -04:00
sdhci-bcm-kona.c Late changes for 3.12 broadcom driver 2013-08-29 16:47:53 -07:00
sdhci-bcm2835.c mmc: sdhci-bcm2835: Staticize bcm2835_sdhci_get_min_clock 2013-08-24 21:37:55 -04:00
sdhci-cns3xxx.c mmc: sdhci: Add size for caller in init+register 2013-05-31 11:59:29 -04:00
sdhci-dove.c mmc: sdhci: Add size for caller in init+register 2013-05-31 11:59:29 -04:00
sdhci-esdhc-imx.c mmc: slot-gpio: Add debouncing capability to mmc_gpio_request_cd() 2013-08-24 23:45:09 -04:00
sdhci-esdhc.h mmc: esdhc: Add support for 8-bit bus width and non-removable card 2013-07-05 12:46:30 -04:00
sdhci-of-esdhc.c mmc: esdhc: add support to get voltage from device-tree 2013-08-26 11:32:43 -04:00
sdhci-of-hlwd.c mmc: sdhci: Add size for caller in init+register 2013-05-31 11:59:29 -04:00
sdhci-pci-data.c mmc: sdhci-pci: add platform data 2012-01-11 23:58:47 -05:00
sdhci-pci.c mmc: sdhci-pci: add another device id 2013-07-05 12:50:31 -04:00
sdhci-pltfm.c mmc: sdhci: Add size for caller in init+register 2013-05-31 11:59:29 -04:00
sdhci-pltfm.h mmc: sdhci: Add size for caller in init+register 2013-05-31 11:59:29 -04:00
sdhci-pxav2.c mmc: sdhci: Add size for caller in init+register 2013-05-31 11:59:29 -04:00
sdhci-pxav3.c mmc: slot-gpio: Add debouncing capability to mmc_gpio_request_cd() 2013-08-24 23:45:09 -04:00
sdhci-s3c-regs.h mmc: sdhci-s3c: remove platform dependencies 2013-04-19 13:51:23 +02:00
sdhci-s3c.c mmc: sdhci-s3c: initialize host->quirks2 for using quirks2 2013-08-29 21:19:13 -04:00
sdhci-sirf.c mmc: slot-gpio: Add debouncing capability to mmc_gpio_request_cd() 2013-08-24 23:45:09 -04:00
sdhci-spear.c mmc: remove unnecessary platform_set_drvdata() 2013-05-26 14:23:23 -04:00
sdhci-tegra.c mmc: tegra: handle mmc_of_parse() errors during probe 2013-06-27 10:23:52 -04:00
sdhci.c MMC highlights for 3.12: 2013-09-10 13:33:09 -07:00
sdhci.h mmc: sdhci: add card_event callback to sdhci 2013-07-05 12:59:12 -04:00
sdricoh_cs.c drivers/mmc: use module_pcmcia_driver() in pcmcia drivers 2013-03-15 12:26:04 -07:00
sh_mmcif.c mmc: sh_mmcif: revision-specific CLK_CTRL2 handling 2013-08-25 00:10:18 -04:00
sh_mobile_sdhi.c mmc: SDHI: add DT compatibility strings for further SoCs 2013-08-25 00:10:13 -04:00
tifm_sd.c Autogenerated GPG tag for Rusty D1ADB8F1: 15EE 8D6C AB0E 7F0C F999 BFCB D920 0E6C D1AD B8F1 2012-01-14 12:32:16 -08:00
tmio_mmc.c mmc: remove unnecessary platform_set_drvdata() 2013-05-26 14:23:23 -04:00
tmio_mmc.h Revert "mmc: tmio-mmc: Remove .set_pwr() callback from platform data" 2013-09-06 07:29:05 -04:00
tmio_mmc_dma.c mmc: tmio_mmc_dma: fix PIO fallback on SDHI 2013-08-24 23:38:15 -04:00
tmio_mmc_pio.c Revert "mmc: tmio-mmc: Remove .set_pwr() callback from platform data" 2013-09-06 07:29:05 -04:00
ushc.c USB: convert some miscellanies drivers to use module_usb_driver() 2011-11-18 09:52:10 -08:00
via-sdmmc.c mmc: remove use of __devexit 2012-11-28 12:28:18 -08:00
vub300.c mmc: vub300: Staticize vub300_init_card 2013-08-24 21:39:53 -04:00
wbsd.c mmc: remove use of __devexit 2012-11-28 12:28:18 -08:00
wbsd.h
wmt-sdmmc.c mmc: remove unnecessary platform_set_drvdata() 2013-05-26 14:23:23 -04:00