Fix following crash due to a leftover uninitialized mutex access
in mt76x02_set_rts_threshold routine.
[ 55.655884] CPU: 0 PID: 412 Comm: iw Not tainted 4.19.0-rc7+ #2493
[ 55.661739] Call Trace:
[ 55.662523] register_lock_class+0x528/0x530
[ 55.663806] __lock_acquire+0x89/0x15d0
[ 55.664841] lock_acquire+0x9f/0x140
[ 55.665794] ? mt76x02_set_rts_threshold+0x28/0x50
[ 55.667056] ? noop_count+0x10/0x10
[ 55.667981] ? mt76x02_set_rts_threshold+0x28/0x50
[ 55.669251] __mutex_lock+0x4a/0x4f0
[ 55.670199] ? mt76x02_set_rts_threshold+0x28/0x50
[ 55.671454] ? find_held_lock+0x2d/0x90
[ 55.672450] ? nl80211_pre_doit+0xf9/0x1a0
[ 55.673467] ? mt76x02_set_rts_threshold+0x28/0x50
[ 55.674637] mt76x02_set_rts_threshold+0x28/0x50
[ 55.675773] ieee80211_set_wiphy_params+0x16d/0x4e0
[ 55.676910] nl80211_set_wiphy+0x72b/0xbc0
[ 55.677927] genl_family_rcv_msg+0x192/0x3a0
[ 55.678919] genl_rcv_msg+0x42/0x89
[ 55.679742] ? genl_family_rcv_msg+0x3a0/0x3a0
[ 55.680600] netlink_rcv_skb+0x38/0x100
[ 55.681313] genl_rcv+0x1f/0x30
[ 55.681899] netlink_unicast+0x16b/0x210
[ 55.682628] netlink_sendmsg+0x1ed/0x390
[ 55.683373] sock_sendmsg+0x31/0x40
[ 55.684020] ___sys_sendmsg+0x23c/0x280
[ 55.684736] ? __handle_mm_fault+0xce8/0x1000
[ 55.685445] ? _raw_spin_unlock+0x1f/0x30
[ 55.686059] ? find_held_lock+0x2d/0x90
[ 55.686648] ? __do_page_fault+0x207/0x440
[ 55.687274] __sys_sendmsg+0x42/0x80
[ 55.687825] do_syscall_64+0x50/0x190
[ 55.688410] entry_SYSCALL_64_after_hwframe+0x49/0xbe
[ 55.689174] RIP: 0033:0x7fdeea227ba7
[ 55.692157] RSP: 002b:00007ffec2395b58 EFLAGS: 00000246 ORIG_RAX:
000000000000002e
[ 55.693138] RAX: ffffffffffffffda RBX: 000000000066c350 RCX: 00007fdeea227ba7
[ 55.694059] RDX: 0000000000000000 RSI: 00007ffec2395b90 RDI: 0000000000000003
[ 55.694966] RBP: 0000000000671740 R08: 0000000000000002 R09: 0000000000000000
[ 55.695773] R10: 0000000000000006 R11: 0000000000000246 R12: 0000000000671880
[ 55.696572] R13: 00007ffec2395b90 R14: 00007ffec2395e60 R15: 0000000000671880
Fixes: 108a4861ef19 (" mt76: create new mt76x02-lib module for common
mt76x{0,2} code")
Reported-by: [email protected]
Reported-by: [email protected]
Signed-off-by: Lorenzo Bianconi <[email protected]>
---
I will post a fix based on wireless-drivers repo
---
drivers/net/wireless/mediatek/mt76/mt76x02.h | 1 -
drivers/net/wireless/mediatek/mt76/mt76x02_util.c | 4 ++--
2 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02.h
b/drivers/net/wireless/mediatek/mt76/mt76x02.h
index 65daa3d3c289..1d8bb426e772 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x02.h
+++ b/drivers/net/wireless/mediatek/mt76/mt76x02.h
@@ -69,7 +69,6 @@ struct mt76x02_dev {
struct mac_address macaddr_list[8];
struct mutex phy_mutex;
- struct mutex mutex;
u8 txdone_seq;
DECLARE_KFIFO_PTR(txstatus_fifo, struct mt76x02_tx_status);
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02_util.c
b/drivers/net/wireless/mediatek/mt76/mt76x02_util.c
index 48f2f5382b57..bd0a879f7e7a 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x02_util.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x02_util.c
@@ -481,9 +481,9 @@ int mt76x02_set_rts_threshold(struct ieee80211_hw *hw, u32
val)
if (val != ~0 && val > 0xffff)
return -EINVAL;
- mutex_lock(&dev->mutex);
+ mutex_lock(&dev->mt76.mutex);
mt76x02_mac_set_tx_protection(dev, val);
- mutex_unlock(&dev->mutex);
+ mutex_unlock(&dev->mt76.mutex);
return 0;
}
--
2.19.1