Frank Li
6b22c402df
mmc: sdhci-esdhc-imx: fix kernel panic when remove module
...
commit a56f44138a2c57047f1ea94ea121af31c595132b upstream.
In sdhci_esdhc_imx_remove() the SDHCI_INT_STATUS in read. Under some
circumstances, this may be done while the device is runtime suspended,
triggering the below splat.
Fix the problem by adding a pm_runtime_get_sync(), before reading the
register, which will turn on clocks etc making the device accessible again.
[ 1811.323148] mmc1: card aaaa removed
[ 1811.347483] Internal error: synchronous external abort: 96000210 [#1 ] PREEMPT SMP
[ 1811.354988] Modules linked in: sdhci_esdhc_imx(-) sdhci_pltfm sdhci cqhci mmc_block mmc_core [last unloaded: mmc_core]
[ 1811.365726] CPU: 0 PID: 3464 Comm: rmmod Not tainted 5.10.1-sd-99871-g53835a2e8186 #5
[ 1811.373559] Hardware name: Freescale i.MX8DXL EVK (DT)
[ 1811.378705] pstate: 60000005 (nZCv daif -PAN -UAO -TCO BTYPE=--)
[ 1811.384723] pc : sdhci_esdhc_imx_remove+0x28/0x15c [sdhci_esdhc_imx]
[ 1811.391090] lr : platform_drv_remove+0x2c/0x50
[ 1811.395536] sp : ffff800012c7bcb0
[ 1811.398855] x29: ffff800012c7bcb0 x28: ffff00002c72b900
[ 1811.404181] x27: 0000000000000000 x26: 0000000000000000
[ 1811.409497] x25: 0000000000000000 x24: 0000000000000000
[ 1811.414814] x23: ffff0000042b3890 x22: ffff800009127120
[ 1811.420131] x21: ffff00002c4c9580 x20: ffff0000042d0810
[ 1811.425456] x19: ffff0000042d0800 x18: 0000000000000020
[ 1811.430773] x17: 0000000000000000 x16: 0000000000000000
[ 1811.436089] x15: 0000000000000004 x14: ffff000004019c10
[ 1811.441406] x13: 0000000000000000 x12: 0000000000000020
[ 1811.446723] x11: 0101010101010101 x10: 7f7f7f7f7f7f7f7f
[ 1811.452040] x9 : fefefeff6364626d x8 : 7f7f7f7f7f7f7f7f
[ 1811.457356] x7 : 78725e6473607372 x6 : 0000000080808080
[ 1811.462673] x5 : 0000000000000000 x4 : 0000000000000000
[ 1811.467990] x3 : ffff800011ac1cb0 x2 : 0000000000000000
[ 1811.473307] x1 : ffff8000091214d4 x0 : ffff8000133a0030
[ 1811.478624] Call trace:
[ 1811.481081] sdhci_esdhc_imx_remove+0x28/0x15c [sdhci_esdhc_imx]
[ 1811.487098] platform_drv_remove+0x2c/0x50
[ 1811.491198] __device_release_driver+0x188/0x230
[ 1811.495818] driver_detach+0xc0/0x14c
[ 1811.499487] bus_remove_driver+0x5c/0xb0
[ 1811.503413] driver_unregister+0x30/0x60
[ 1811.507341] platform_driver_unregister+0x14/0x20
[ 1811.512048] sdhci_esdhc_imx_driver_exit+0x1c/0x3a8 [sdhci_esdhc_imx]
[ 1811.518495] __arm64_sys_delete_module+0x19c/0x230
[ 1811.523291] el0_svc_common.constprop.0+0x78/0x1a0
[ 1811.528086] do_el0_svc+0x24/0x90
[ 1811.531405] el0_svc+0x14/0x20
[ 1811.534461] el0_sync_handler+0x1a4/0x1b0
[ 1811.538474] el0_sync+0x174/0x180
[ 1811.541801] Code: a9025bf5 f9403e95 f9400ea0 9100c000 (b9400000)
[ 1811.547902] ---[ end trace 3fb1a3bd48ff7be5 ]---
Signed-off-by: Frank Li <Frank.Li@nxp.com>
Cc: stable@vger.kernel.org # v4.0+
Link: https://lore.kernel.org/r/20210210181933.29263-1-Frank.Li@nxp.com
[Ulf: Clarified the commit message a bit]
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-03-04 10:26:49 +01:00
..
2020-05-20 08:20:21 +02:00
2019-07-11 18:11:21 -07:00
2019-09-11 15:58:39 +02:00
2019-06-19 17:09:55 +02:00
2019-09-11 15:59:01 +02:00
2019-08-06 18:59:14 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2020-09-09 19:12:33 +02:00
2020-09-09 19:12:33 +02:00
2019-05-24 17:36:45 +02:00
2019-01-22 08:46:20 +01:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2019-09-11 16:10:37 +02:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2017-11-02 11:10:55 +01:00
2019-09-11 16:10:18 +02:00
2019-05-30 11:26:32 -07:00
2019-09-11 15:58:39 +02:00
2019-09-27 20:48:20 +02:00
2019-09-27 20:48:20 +02:00
2020-07-16 08:16:46 +02:00
2020-06-22 09:30:56 +02:00
2020-02-11 04:35:19 -08:00
2019-06-05 17:36:37 +02:00
2020-06-17 16:40:37 +02:00
2020-07-22 09:32:57 +02:00
2020-07-22 09:32:57 +02:00
2020-09-09 19:12:33 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-09-11 15:58:39 +02:00
2019-10-21 16:16:38 +02:00
2019-04-15 11:55:54 +02:00
2019-12-17 19:56:40 +01:00
2019-06-19 17:09:55 +02:00
2020-12-30 11:51:11 +01:00
2017-11-02 11:10:55 +01:00
2020-11-18 19:20:31 +01:00
2021-03-04 10:26:31 +01:00
2019-09-11 15:58:39 +02:00
2019-04-15 11:55:54 +02:00
2020-03-25 08:25:54 +01:00
2019-06-19 17:09:07 +02:00
2019-09-11 15:58:39 +02:00
2019-07-11 18:11:21 -07:00
2020-01-29 16:45:28 +01:00
2019-09-11 15:58:39 +02:00
2020-11-05 11:43:23 +01:00
2019-02-25 08:40:58 +01:00
2019-05-30 11:26:41 -07:00
2020-08-19 08:16:01 +02:00
2019-06-19 17:09:55 +02:00
2019-05-30 11:29:19 -07:00
2021-03-04 10:26:49 +01:00
2020-01-04 19:19:18 +01:00
2019-10-09 11:05:50 +02:00
2020-09-17 13:47:44 +02:00
2019-09-11 15:58:39 +02:00
2020-07-29 10:18:44 +02:00
2020-03-25 08:25:54 +01:00
2018-10-08 11:40:43 +02:00
2020-11-18 19:20:31 +01:00
2019-05-30 11:26:32 -07:00
2020-04-01 11:01:28 +02:00
2018-01-04 12:46:11 +01:00
2020-11-24 13:29:24 +01:00
2019-05-21 10:50:45 +02:00
2018-07-16 11:21:45 +02:00
2020-05-20 08:20:21 +02:00
2020-08-19 08:16:04 +02:00
2020-02-01 09:34:50 +00:00
2018-05-29 12:24:26 +02:00
2019-09-11 15:58:39 +02:00
2019-06-19 17:09:55 +02:00
2019-06-05 17:36:37 +02:00
2019-08-06 18:59:14 +02:00
2019-09-11 15:58:39 +02:00
2019-05-21 11:28:40 +02:00
2018-10-08 11:40:43 +02:00
2021-03-04 10:26:31 +01:00
2019-05-30 11:26:41 -07:00
2020-09-09 19:12:36 +02:00
2019-06-05 17:37:10 +02:00
2021-01-27 11:47:41 +01:00
2019-06-05 17:37:10 +02:00
2020-11-05 11:43:36 +01:00
2020-04-17 10:50:25 +02:00
2019-05-24 17:36:45 +02:00
2019-10-03 11:38:37 +02:00
2019-05-30 11:26:32 -07:00
2019-06-19 17:09:55 +02:00
2020-06-17 16:40:37 +02:00
2019-09-13 13:48:35 +02:00
2019-09-13 13:49:04 +02:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2020-06-17 16:40:37 +02:00
2021-03-04 10:26:31 +01:00
2019-05-30 11:26:32 -07:00
2020-11-05 11:43:16 +01:00
2019-06-05 17:37:10 +02:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2019-06-19 17:09:55 +02:00