]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
wifi: mt76: mt7921: drop TXRX_NOTIFY on non-mmio buses
authorDevin Wittmayer <lucid_duck@justthetip.ca>
Sat, 27 Jun 2026 19:13:34 +0000 (12:13 -0700)
committerFelix Fietkau <nbd@nbd.name>
Wed, 22 Jul 2026 06:08:43 +0000 (06:08 +0000)
commitda4082e91acabc1498611ed8ccc53f0610baefc6
treebfb525e34d796b9d2ec24c282f4569fe7f66bdf1
parent29ab31f3f27157648f2f7e6d5e1fd9792fdf0614
wifi: mt76: mt7921: drop TXRX_NOTIFY on non-mmio buses

PKT_TYPE_TXRX_NOTIFY is an mmio-only event, but mt7921_rx_check() and
mt7921_queue_rx_skb() dispatch it to mt7921_mac_tx_free() on every bus.
mt7921_mac_tx_free() cleans the DMA tx queues with
mt76_queue_tx_cleanup(), which calls queue_ops->tx_cleanup(). Only the
mmio queue ops implement that callback; on USB and SDIO it is NULL, so
a TXRX_NOTIFY there calls a NULL pointer in the RX worker:

  BUG: kernel NULL pointer dereference, address: 0000000000000000
  RIP: 0010:0x0
  Call Trace:
   mt7921_mac_tx_free+0x64/0x310 [mt7921_common]
   mt7921_rx_check+0x5f/0xf0 [mt7921_common]
   mt76u_rx_worker+0x1b9/0x620 [mt76_usb]

Drop the event on non-mmio buses via mt76_is_mmio(), as in
commit 5683e1488aa9 ("wifi: mt76: connac: do not check WED status for
non-mmio devices").

Fixes: 48fab5bbef40 ("mt76: mt7921: introduce mt7921s support")
Cc: stable@vger.kernel.org
Signed-off-by: Devin Wittmayer <lucid_duck@justthetip.ca>
Link: https://patch.msgid.link/20260627191336.20223-2-lucid_duck@justthetip.ca
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt7921/mac.c