]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
wifi: mt76: mt7996: Add missing locking in mt7996_mac_sta_rc_work()
authorLorenzo Bianconi <lorenzo@kernel.org>
Tue, 18 Nov 2025 09:30:26 +0000 (10:30 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 18 Dec 2025 13:03:15 +0000 (14:03 +0100)
[ Upstream commit 7545551631fa63101f97974f49ac0b564814f703 ]

Grab the mt76 mutex running mt7996_mac_sta_rc_work() since it is
required by mt7996_mcu_add_rate_ctrl routine.

Fixes: 28d519d0d493a ("wifi: mt76: Move RCU section in mt7996_mcu_add_rate_ctrl_fixed()")
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Link: https://patch.msgid.link/20251118-mt7996-rc-work-missing-mtx-v1-1-0739c493a6cb@kernel.org
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/wireless/mediatek/mt76/mt7996/mac.c

index cfad46a532bb794d7b4177e32642d8cda258c0a8..502136691a69e4a7a0db42eaf1c2b3e11fe98d4f 100644 (file)
@@ -2860,6 +2860,8 @@ void mt7996_mac_sta_rc_work(struct work_struct *work)
        LIST_HEAD(list);
        u32 changed;
 
+       mutex_lock(&dev->mt76.mutex);
+
        spin_lock_bh(&dev->mt76.sta_poll_lock);
        list_splice_init(&dev->sta_rc_list, &list);
 
@@ -2892,6 +2894,8 @@ void mt7996_mac_sta_rc_work(struct work_struct *work)
        }
 
        spin_unlock_bh(&dev->mt76.sta_poll_lock);
+
+       mutex_unlock(&dev->mt76.mutex);
 }
 
 void mt7996_mac_work(struct work_struct *work)