Skip to content

Commit 412d19b

Browse files
LorenzoBianconinbd168
authored andcommitted
wifi: mt76: mt7915: fix memory leak in mt7915_mmio_wed_init_rx_buf
Free mt76_txwi_cache pointer in mt7915_mmio_wed_init_rx_buf routine in case of failure. Fixes: 4f831d1 ("wifi: mt76: mt7915: enable WED RX support") Signed-off-by: Lorenzo Bianconi <[email protected]> Signed-off-by: Felix Fietkau <[email protected]>
1 parent c222f77 commit 412d19b

File tree

1 file changed

+8
-1
lines changed
  • drivers/net/wireless/mediatek/mt76/mt7915

1 file changed

+8
-1
lines changed

drivers/net/wireless/mediatek/mt76/mt7915/mmio.c

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -635,16 +635,22 @@ static u32 mt7915_mmio_wed_init_rx_buf(struct mtk_wed_device *wed, int size)
635635
int token;
636636
void *ptr;
637637

638+
if (!t)
639+
goto unmap;
640+
638641
page = __dev_alloc_pages(GFP_KERNEL, get_order(length));
639-
if (!page)
642+
if (!page) {
643+
mt76_put_rxwi(&dev->mt76, t);
640644
goto unmap;
645+
}
641646

642647
ptr = page_address(page);
643648
phy_addr = dma_map_single(dev->mt76.dma_dev, ptr,
644649
wed->wlan.rx_size,
645650
DMA_TO_DEVICE);
646651
if (unlikely(dma_mapping_error(dev->mt76.dev, phy_addr))) {
647652
__free_pages(page, get_order(length));
653+
mt76_put_rxwi(&dev->mt76, t);
648654
goto unmap;
649655
}
650656

@@ -654,6 +660,7 @@ static u32 mt7915_mmio_wed_init_rx_buf(struct mtk_wed_device *wed, int size)
654660
dma_unmap_single(dev->mt76.dma_dev, phy_addr,
655661
wed->wlan.rx_size, DMA_TO_DEVICE);
656662
__free_pages(page, get_order(length));
663+
mt76_put_rxwi(&dev->mt76, t);
657664
goto unmap;
658665
}
659666

0 commit comments

Comments
 (0)