diff options
author | Jia-Ju Bai <baijiaju1990@163.com> | 2017-06-01 11:49:08 +0800 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2017-06-03 17:52:00 +0900 |
commit | 385cab7c7131083cbe09d5f1d06df4544caa272d (patch) | |
tree | 526f98c10a4e6f7e6d5df53468fd7c3e82cb4fe4 | |
parent | a0eee1b6dabd79019196fd1d1a66eeb93788867a (diff) | |
download | linux-stable-385cab7c7131083cbe09d5f1d06df4544caa272d.tar.gz linux-stable-385cab7c7131083cbe09d5f1d06df4544caa272d.tar.bz2 linux-stable-385cab7c7131083cbe09d5f1d06df4544caa272d.zip |
rts5208: Fix a sleep-in-atomic bug in sd_power_off_card3v3
The driver may sleep under a spin lock, and the function call path is:
rtsx_exclusive_enter_ss (acquire the lock by spin_lock)
rtsx_enter_ss
rtsx_power_off_card
sd_power_off_card3v3
wait_timeout
schedule_timeout --> may sleep
To fix it, "wait_timeout" is replaced with mdelay in sd_power_off_card3v3.
Signed-off-by: Jia-Ju Bai <baijiaju1990@163.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r-- | drivers/staging/rts5208/sd.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/staging/rts5208/sd.c b/drivers/staging/rts5208/sd.c index bdd35b611f27..aa144542e4e3 100644 --- a/drivers/staging/rts5208/sd.c +++ b/drivers/staging/rts5208/sd.c @@ -5231,7 +5231,7 @@ int sd_power_off_card3v3(struct rtsx_chip *chip) return STATUS_FAIL; } - wait_timeout(50); + mdelay(50); } if (chip->asic_code) { |