diff options
author | Mohammed Shafi Shajakhan <mohammed@qca.qualcomm.com> | 2013-08-21 21:56:44 +0530 |
---|---|---|
committer | Kalle Valo <kvalo@qca.qualcomm.com> | 2013-08-28 07:08:27 +0300 |
commit | e2951f7ff8d6f94f1f3c2cab1f360de444b32ed8 (patch) | |
tree | 118fefa0e7309e34b6ecacbc6db584c4c6cbbf5c /drivers/net/wireless/ath/ath10k/debug.c | |
parent | 961d4c38961a0f61e43edbb1fb579f28475a88bd (diff) |
ath10k: Fix mutex unlock balance
ath10k_debug_read_target_stats is properly
protected by data_lock (spinlock). Remove
the unwanted mutex_unlock(&ar->conf_mutex)
[ BUG: bad unlock balance detected! ]
-------------------------------------
kworker/u4:0/12459 is trying to release lock
(&ar->conf_mutex) at:
[<c16a170d>] mutex_unlock+0xd/0x10
but there are no more locks to release!
Call Trace:
[<c16a170d>] ? mutex_unlock+0xd/0x10
[<c10b697d>] __lock_release+0x4d/0xe0
[<f88ca0fc>] ? ath10k_debug_read_target_stats+0xac/0x290
[<c16a170d>] ? mutex_unlock+0xd/0x10
[<c10b6a5b>] lock_release+0x4b/0x150
[<c16a1580>] __mutex_unlock_slowpath+0x70/0x150
[<f88ca0fc>] ? ath10k_debug_read_target_stats+0xac/0x290
[<c10b456b>] ? trace_hardirqs_on+0xb/0x10
[<c16a170d>] mutex_unlock+0xd/0x10
[<f88ca107>] ath10k_debug_read_target_stats+0xb7/0x290
[<f88d337a>] ath10k_wmi_event_process+0x3fa/0x6e0
[<c10b456b>] ? trace_hardirqs_on+0xb/0x10
[<f88d36e1>] ath10k_wmi_event_work+0x21/0x40
[ath10k_core]
Signed-off-by: Mohammed Shafi Shajakhan <mohammed@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
Diffstat (limited to 'drivers/net/wireless/ath/ath10k/debug.c')
-rw-r--r-- | drivers/net/wireless/ath/ath10k/debug.c | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/drivers/net/wireless/ath/ath10k/debug.c b/drivers/net/wireless/ath/ath10k/debug.c index 3d65594fa09..fcb40ccdb33 100644 --- a/drivers/net/wireless/ath/ath10k/debug.c +++ b/drivers/net/wireless/ath/ath10k/debug.c @@ -260,7 +260,6 @@ void ath10k_debug_read_target_stats(struct ath10k *ar, } spin_unlock_bh(&ar->data_lock); - mutex_unlock(&ar->conf_mutex); complete(&ar->debug.event_stats_compl); } |