2020-06-15 18:16:07

by Felix Fietkau

[permalink] [raw]
Subject: [PATCH 5.8] mt76: mt76x02: do not access uninitialized NAPI structs

Fixes a crash on MMIO devices when running into the watchdog reset

Fixes: d3377b78cec6 ("mt76: add HE phy modes and hardware queue")
Signed-off-by: Felix Fietkau <[email protected]>
---
drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c b/drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c
index cbbe986655fe..5fda6e7b120c 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c
@@ -456,8 +456,9 @@ static void mt76x02_watchdog_reset(struct mt76x02_dev *dev)
tasklet_disable(&dev->mt76.tx_tasklet);
napi_disable(&dev->mt76.tx_napi);

- for (i = 0; i < ARRAY_SIZE(dev->mt76.napi); i++)
+ mt76_for_each_q_rx(&dev->mt76, i) {
napi_disable(&dev->mt76.napi[i]);
+ }

mutex_lock(&dev->mt76.mutex);

@@ -515,7 +516,7 @@ static void mt76x02_watchdog_reset(struct mt76x02_dev *dev)

tasklet_enable(&dev->mt76.pre_tbtt_tasklet);

- for (i = 0; i < ARRAY_SIZE(dev->mt76.napi); i++) {
+ mt76_for_each_q_rx(&dev->mt76, i) {
napi_enable(&dev->mt76.napi[i]);
napi_schedule(&dev->mt76.napi[i]);
}
--
2.24.0


2020-06-23 08:45:47

by Kalle Valo

[permalink] [raw]
Subject: Re: [PATCH 5.8] mt76: mt76x02: do not access uninitialized NAPI structs

Felix Fietkau <[email protected]> wrote:

> Fixes a crash on MMIO devices when running into the watchdog reset
>
> Fixes: d3377b78cec6 ("mt76: add HE phy modes and hardware queue")
> Signed-off-by: Felix Fietkau <[email protected]>

Patch applied to wireless-drivers.git, thanks.

4ac668a3b8c9 mt76: mt76x02: do not access uninitialized NAPI structs

--
https://patchwork.kernel.org/patch/11605487/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches