From: Felix Fietkau Date: Fri, 13 Dec 2019 23:15:26 +0000 (+0100) Subject: mt76: clear skb pointers from rx aggregation reorder buffer during cleanup X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=9379df2fd9234e3b67a23101c2370c99f6af6d77;p=linux.git mt76: clear skb pointers from rx aggregation reorder buffer during cleanup 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 --- diff --git a/drivers/net/wireless/mediatek/mt76/agg-rx.c b/drivers/net/wireless/mediatek/mt76/agg-rx.c index a4c64ae8fb1a7..f77f035302591 100644 --- a/drivers/net/wireless/mediatek/mt76/agg-rx.c +++ b/drivers/net/wireless/mediatek/mt76/agg-rx.c @@ -276,6 +276,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); }