Watch
1
Fork
You've already forked kernel_a52xq
0
mirror of https://github.com/a52xq-dev/kernel.git synced 2026-10-18 21:58:11 +07:00
kernel_a52xq/drivers/mmc/core
Repository files (latest commit first)
Filename Latest commit message Latest commit date
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