]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
mt76: clear skb pointers from rx aggregation reorder buffer during cleanup
authorFelix Fietkau <nbd@nbd.name>
Fri, 13 Dec 2019 23:15:26 +0000 (00:15 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 1 Oct 2020 11:14:33 +0000 (13:14 +0200)
[ Upstream commit 9379df2fd9234e3b67a23101c2370c99f6af6d77 ]

During the cleanup of the aggregation session, a rx handler (or release timer)
on another CPU might still hold a pointer to the reorder buffer and could
attempt to release some packets.
Clearing pointers during cleanup avoids a theoretical use-after-free bug here.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/wireless/mediatek/mt76/agg-rx.c

index d44d57e6eb27ae643462a4af6e07cde7a19fee32..97df6b3a472b1c4a138cf836e899f444576d05b1 100644 (file)
@@ -278,6 +278,7 @@ static void mt76_rx_aggr_shutdown(struct mt76_dev *dev, struct mt76_rx_tid *tid)
                if (!skb)
                        continue;
 
+               tid->reorder_buf[i] = NULL;
                tid->nframes--;
                dev_kfree_skb(skb);
        }