]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
wifi: mt76: mt7915: hold dev->mt76.mutex while disabling tx worker
authorFelix Fietkau <nbd@nbd.name>
Tue, 27 Aug 2024 09:30:04 +0000 (11:30 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 17 Oct 2024 13:11:27 +0000 (15:11 +0200)
[ Upstream commit 8f7152f10cb434f954aeff85ca1be9cd4d01912b ]

Prevent racing against other functions disabling the same worker

Link: https://patch.msgid.link/20240827093011.18621-17-nbd@nbd.name
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/wireless/mediatek/mt76/mt7915/mac.c

index a8a0e6af51f854be250156369726d0a21a45b97e..f6e686cc642b68f87d416e113fd7fadba7d2e6fc 100644 (file)
@@ -1653,13 +1653,15 @@ void mt7915_mac_reset_work(struct work_struct *work)
                set_bit(MT76_RESET, &phy2->mt76->state);
                cancel_delayed_work_sync(&phy2->mt76->mac_work);
        }
+
+       mutex_lock(&dev->mt76.mutex);
+
        mt76_worker_disable(&dev->mt76.tx_worker);
        napi_disable(&dev->mt76.napi[0]);
        napi_disable(&dev->mt76.napi[1]);
        napi_disable(&dev->mt76.napi[2]);
        napi_disable(&dev->mt76.tx_napi);
 
-       mutex_lock(&dev->mt76.mutex);
 
        mt76_wr(dev, MT_MCU_INT_EVENT, MT_MCU_INT_EVENT_DMA_STOPPED);