Sarthak Garg
34141cb877
mmc: core: Fix recursive locking issue in CQE recovery path
...
commit 39a22f73744d5baee30b5f134ae2e30b668b66ed upstream.
Consider the following stack trace
-001|raw_spin_lock_irqsave
-002|mmc_blk_cqe_complete_rq
-003|__blk_mq_complete_request(inline)
-003|blk_mq_complete_request(rq)
-004|mmc_cqe_timed_out(inline)
-004|mmc_mq_timed_out
mmc_mq_timed_out acquires the queue_lock for the first
time. The mmc_blk_cqe_complete_rq function also tries to acquire
the same queue lock resulting in recursive locking where the task
is spinning for the same lock which it has already acquired leading
to watchdog bark.
Fix this issue with the lock only for the required critical section.
Cc: <stable@vger.kernel.org>
Fixes: 1e8e55b670 ("mmc: block: Add CQE support")
Suggested-by: Sahitya Tummala <stummala@codeaurora.org>
Signed-off-by: Sarthak Garg <sartgarg@codeaurora.org>
Acked-by: Adrian Hunter <adrian.hunter@intel.com>
Link: https://lore.kernel.org/r/1588868135-31783-1-git-send-email-vbadigan@codeaurora.org
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-06-03 08:19:42 +02:00
..
block.c
mmc: block: Fix use-after-free issue for rpmb
2020-06-03 08:19:37 +02:00
block.h
mmc: block: Remove code no longer needed after the switch to blk-mq
2017-12-11 13:02:22 +01:00
bus.c
mmc: core: Remove code no longer needed after the switch to blk-mq
2017-12-11 13:05:58 +01:00
bus.h
mmc: core: Move public functions from card.h to private headers
2017-02-13 13:20:24 +01:00
card.h
mmc: core: Add a new quirk for limiting clock rate
2018-05-02 15:08:39 +02:00
core.c
mmc: core: Respect MMC_CAP_NEED_RSP_BUSY for erase/trim/discard
2020-04-02 15:28:09 +02:00
core.h
mmc: core: Drop the unused mmc_power_save|restore_host()
2018-07-16 11:21:45 +02:00
debugfs.c
mmc: Export host capabilities to debugfs.
2018-03-22 10:36:27 +01:00
host.c
mmc: core: fix possible use after free of host
2020-01-27 14:50:45 +01:00
host.h
mmc: core: Don't try UHS-I mode if 4-bit mode isn't supported
2018-03-15 09:30:39 +01:00
Kconfig
mmc: core: Delete bounce buffer Kconfig option
2017-06-20 10:30:17 +02:00
Makefile
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
mmc.c
mmc: core: Respect MMC_CAP_NEED_RSP_BUSY for eMMC sleep command
2020-04-02 15:28:09 +02:00
mmc_ops.c
mmc: core: Allow host controllers to require R1B for CMD6
2020-04-02 15:28:09 +02:00
mmc_ops.h
mmc: core: Re-factor code for sending CID
2017-06-20 10:30:45 +02:00
mmc_test.c
mmc: mmc_test: Ensure command queue is disabled for testing
2017-12-11 12:51:29 +01:00
pwrseq.c
mmc: pwrseq: Add reset callback to the struct mmc_pwrseq_ops
2017-06-20 10:30:09 +02:00
pwrseq.h
mmc: pwrseq: Add reset callback to the struct mmc_pwrseq_ops
2017-06-20 10:30:09 +02:00
pwrseq_emmc.c
mmc: core: make pwrseq_emmc (partially) support sleepy GPIO controllers
2019-05-31 06:46:22 -07:00
pwrseq_sd8787.c
mmc: pwrseq: add support for Marvell SD8787 chip
2017-02-13 13:20:33 +01:00
pwrseq_simple.c
mmc: pwrseq: Use kmalloc_array instead of stack VLA
2018-05-02 15:08:29 +02:00
queue.c
mmc: core: Fix recursive locking issue in CQE recovery path
2020-06-03 08:19:42 +02:00
queue.h
mmc: block: Fix unsupported parallel dispatch of requests
2018-08-21 16:12:41 +02:00
quirks.h
mmc: core: fix wl1251 sdio quirks
2020-01-27 14:51:21 +01:00
sd.c
mmc: core: Fix init of SD cards reporting an invalid VDD range
2019-09-06 10:22:17 +02:00
sd.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
sd_ops.c
mmc: core: add proper be32 annotation
2017-04-24 21:42:19 +02:00
sd_ops.h
mmc: core: add proper be32 annotation
2017-04-24 21:42:19 +02:00
sdio.c
mmc: core: Prevent processing SDIO IRQs when the card is suspended
2019-06-25 11:35:53 +08:00
sdio_bus.c
mmc: sdio: Respect all error codes from dev_pm_domain_attach()
2018-05-14 22:58:45 +02:00
sdio_bus.h
mmc: core: First step in cleaning up private mmc header files
2017-02-13 13:20:20 +01:00
sdio_cis.c
mmc: core: remove BUG_ONs from sdio
2016-12-05 10:31:08 +01:00
sdio_cis.h
mmc: core: First step in cleaning up private mmc header files
2017-02-13 13:20:20 +01:00
sdio_io.c
mmc: core: Add sdio_retune_hold_now() and sdio_retune_release()
2019-06-25 11:35:53 +08:00
sdio_irq.c
mmc: core: Clarify sdio_irq_pending flag for MMC_CAP2_SDIO_IRQ_NOTHREAD
2019-10-05 13:09:56 +02:00
sdio_ops.c
mmc: sdio: improve mmc_io_rw_extended
2017-04-24 21:41:42 +02:00
sdio_ops.h
mmc: sdio: Add API to manage SDIO IRQs from a workqueue
2017-06-20 10:30:11 +02:00
sdio_uart.c
tty: replace ->proc_fops with ->proc_show
2018-05-16 07:24:30 +02:00
slot-gpio.c
mmc: slot-gpio: Fix debounce time to use miliseconds again
2018-09-28 17:43:48 +02:00
slot-gpio.h
mmc: core: First step in cleaning up private mmc header files
2017-02-13 13:20:20 +01:00