mirror of
https://github.com/torvalds/linux.git
synced 2026-06-01 19:13:47 +02:00
wifi: rtl818x: Fix potential memory leaks in rtl8180_init_rx_ring()
In rtl8180_init_rx_ring(), memory is allocated for skb packets and DMA
allocations in a loop. When an allocation fails, the previously
successful allocations are not freed on exit.
Fix that by jumping to err_free_rings label on error, which calls
rtl8180_free_rx_ring() to free the allocations. Remove the free of
rx_ring in rtl8180_init_rx_ring() error path, and set the freed
priv->rx_buf entry to null, to avoid double free.
Fixes: f653211197 ("Add rtl8180 wireless driver")
Signed-off-by: Abdun Nihaal <nihaal@cse.iitm.ac.in>
Reviewed-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Link: https://patch.msgid.link/20251114094527.79842-1-nihaal@cse.iitm.ac.in
This commit is contained in:
parent
c8d212fa81
commit
9b5b9c042b
|
|
@ -1023,9 +1023,6 @@ static int rtl8180_init_rx_ring(struct ieee80211_hw *dev)
|
|||
dma_addr_t *mapping;
|
||||
entry = priv->rx_ring + priv->rx_ring_sz*i;
|
||||
if (!skb) {
|
||||
dma_free_coherent(&priv->pdev->dev,
|
||||
priv->rx_ring_sz * 32,
|
||||
priv->rx_ring, priv->rx_ring_dma);
|
||||
wiphy_err(dev->wiphy, "Cannot allocate RX skb\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
|
@ -1037,9 +1034,7 @@ static int rtl8180_init_rx_ring(struct ieee80211_hw *dev)
|
|||
|
||||
if (dma_mapping_error(&priv->pdev->dev, *mapping)) {
|
||||
kfree_skb(skb);
|
||||
dma_free_coherent(&priv->pdev->dev,
|
||||
priv->rx_ring_sz * 32,
|
||||
priv->rx_ring, priv->rx_ring_dma);
|
||||
priv->rx_buf[i] = NULL;
|
||||
wiphy_err(dev->wiphy, "Cannot map DMA for RX skb\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
|
@ -1130,7 +1125,7 @@ static int rtl8180_start(struct ieee80211_hw *dev)
|
|||
|
||||
ret = rtl8180_init_rx_ring(dev);
|
||||
if (ret)
|
||||
return ret;
|
||||
goto err_free_rings;
|
||||
|
||||
for (i = 0; i < (dev->queues + 1); i++)
|
||||
if ((ret = rtl8180_init_tx_ring(dev, i, 16)))
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user