linux/drivers/net/wireless/ath
Vasanthakumar Thiagarajan 11f6e40d9f ath6kl: Fix lockdep warning
The following is the lockdep warning which detects possible
deadlock condition with the way ar->lock and ar->list_lock
are being used.

  (&(&ar->lock)->rlock){+.-...}, at: [<ffffffffa0492d13>] ath6kl_indicate_tx_activity+0x83/0x110 [ath6kl]
 but this lock took another, SOFTIRQ-unsafe lock in the past:
  (&(&ar->list_lock)->rlock){+.+...}

 and interrupts could create inverse lock ordering between them.

 other info that might help us debug this:
  Possible interrupt unsafe locking scenario:

        CPU0                    CPU1
        ----                    ----
   lock(&(&ar->list_lock)->rlock);
                                local_irq_disable();
                                lock(&(&ar->lock)->rlock);
                                lock(&(&ar->list_lock)->rlock);
   <Interrupt>
     lock(&(&ar->lock)->rlock);

  *** DEADLOCK ***

softirqs have to be disabled when acquiring ar->list_lock to avoid
the above deadlock condition. When the above warning printed the
interface is still up and running without issue.

Reported-by: Kalle Valo <kvalo@qca.qualcomm.com>
Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-11-11 12:59:00 +02:00
..
ath5k ath5k: remove some unneeded error handling code 2011-10-11 16:41:09 -04:00
ath6kl ath6kl: Fix lockdep warning 2011-11-11 12:59:00 +02:00
ath9k ath9k: Improve debugfs printout for stations. 2011-11-09 16:01:02 -05:00
carl9170 carl9170: fix AMPDU TX_CTL_REQ_TX_STATUS handling 2011-11-02 15:23:12 -04:00
ath.h ath9k: Add btcoex profile management support for AR9462 2011-11-08 15:54:30 -05:00
debug.c
hw.c Merge ssh://master.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 into for-davem 2011-05-24 16:47:54 -04:00
Kconfig Add ath6kl cleaned up driver 2011-08-09 19:45:18 +03:00
key.c ath: use get_unaligned_le{16,32} in ath_hw_keysetmac() 2011-07-18 14:29:41 -04:00
main.c ath: Make ath_printk void not int and remove unused struct ath_common * 2011-08-30 15:38:52 -04:00
Makefile Add ath6kl cleaned up driver 2011-08-09 19:45:18 +03:00
reg.h
regd_common.h ath: fix spelling of Grenada 2011-08-08 16:04:13 -04:00
regd.c ath: Fix NULL ptr dereference in ath_reg_apply_world_flags 2011-11-08 15:02:45 -05:00
regd.h ath: fix spelling of Grenada 2011-08-08 16:04:13 -04:00