diff options
| author | Cristian Papa <pcristian292@gmail.com> | 2026-09-03 22:07:02 -0300 |
|---|---|---|
| committer | Felix Fietkau <nbd@nbd.name> | 2026-10-06 11:50:52 +0200 |
| commit | 456de496b53ae73e6e3020fec815dbdc88aa7c07 (patch) | |
| tree | 37529873d21c898b406c7804274197a8f6721060 /tools/perf/scripts/python/task-analyzer.py | |
| parent | 5796b2bf9ff718342773ac760d86eb126c112a4f (diff) | |
| download | linux-456de496b53ae73e6e3020fec815dbdc88aa7c07.tar.gz linux-456de496b53ae73e6e3020fec815dbdc88aa7c07.zip | |
wifi: mt76: mt7603: initialize global station WCID
mt7603 uses a driver-private global station WCID for frames that have
neither a station nor a vif, including frames injected through a monitor
interface. Unlike the core global WCID initialized by
mt76_register_device(), this WCID is published without ever being passed
to mt76_wcid_init().
Since commit 0335c034e726 ("wifi: mt76: fix race condition related to
checking tx queue fill status"), mt76_tx() queues every such frame on the
WCID's tx_pending or tx_offchannel queue and links its tx_list. The first
injected frame therefore reaches __skb_queue_tail() with an uninitialized
sk_buff_head and dereferences a NULL prev pointer.
Initialize the WCID before publishing it.
The fix was tested on an MT7603 PCIe device. Three wildcard probe requests
were injected through a monitor interface. The hardware queue head and tail
advanced from 0 to 3 and a second radio captured the third request over the
air. No oops or reset occurred. After restoring AP mode, a 150 MB transfer
also completed without a reset.
Fixes: 0335c034e726 ("wifi: mt76: fix race condition related to checking tx queue fill status")
Cc: stable@vger.kernel.org
Signed-off-by: Cristian Papa <pcristian292@gmail.com>
Link: https://patch.msgid.link/20260904010702.16306-1-pcristian292@gmail.com
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'tools/perf/scripts/python/task-analyzer.py')
0 files changed, 0 insertions, 0 deletions
