diff options
author | Raja Mani <rmani@qca.qualcomm.com> | 2012-02-09 08:27:12 +0100 |
---|---|---|
committer | Kalle Valo <kvalo@qca.qualcomm.com> | 2012-03-01 08:34:12 +0100 |
commit | d1f4159723450252b643bcddff064153f32918bc (patch) | |
tree | e9431ed202bf979681c027106e93b72b86db4ef4 /drivers/char/hpet.c | |
parent | ath6kl: Collect residue firmware logs (diff) | |
download | linux-d1f4159723450252b643bcddff064153f32918bc.tar.xz linux-d1f4159723450252b643bcddff064153f32918bc.zip |
ath6kl: Fix random system lockup
The commit "ath6kl: Use a mutex_lock to avoid
race in diabling and handling irq" introduces a
state where ath6kl_sdio_irq_handler() would be waiting
to claim the sdio function for receive indefinitely
when things happen in the following order.
ath6kl_sdio_irq_handler()
- aquires mtx_irq
- sdio_release_host()
ath6kl_sdio_irq_disable()
- sdio_claim_host()
- sleep on mtx_irq
ath6kl_hif_intr_bh_handler()
- (indefinitely) wait for the sdio
function to be released to exclusively claim
it again for receive operation.
Fix this by replacing the mtx_irq with an atomic
variable and a wait_queue.
kvalo: add ath6kl_sdio_is_on_irq() due to open parenthesis alignment
Signed-off-by: Raja Mani <rmani@qca.qualcomm.com>
Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
Diffstat (limited to 'drivers/char/hpet.c')
0 files changed, 0 insertions, 0 deletions