]> git.baikalelectronics.ru Git - kernel.git/commitdiff
mt76: mt76s: fix NULL pointer dereference in mt76s_process_tx_queue
authorLorenzo Bianconi <lorenzo@kernel.org>
Tue, 8 Dec 2020 09:18:11 +0000 (10:18 +0100)
committerKalle Valo <kvalo@codeaurora.org>
Sun, 20 Dec 2020 12:04:59 +0000 (14:04 +0200)
Fix a possible NULL pointer dereference in mt76s_process_tx_queue that
can occur if status thread runs before allocating tx queues

Fixes: 0f06eef29c98 ("mt76: sdio: convert {status/net}_work to mt76_worker")
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/b49c1b4edacd87b2241a9fd0431dd4864c8963f6.1607418933.git.lorenzo@kernel.org
drivers/net/wireless/mediatek/mt76/sdio.c

index 7cd995118257d04cdb253656d099cbd5a24c9e90..0b6facb17ff722772981476943c1a0d3a6f5c2d8 100644 (file)
@@ -157,10 +157,14 @@ static void mt76s_net_worker(struct mt76_worker *w)
 
 static int mt76s_process_tx_queue(struct mt76_dev *dev, struct mt76_queue *q)
 {
-       bool mcu = q == dev->q_mcu[MT_MCUQ_WM];
        struct mt76_queue_entry entry;
        int nframes = 0;
+       bool mcu;
 
+       if (!q)
+               return 0;
+
+       mcu = q == dev->q_mcu[MT_MCUQ_WM];
        while (q->queued > 0) {
                if (!q->entry[q->tail].done)
                        break;