forked from Minki/linux
rtl818x_pci: Fix a memory leak in rtl8180_init_rx_ring
When dev_alloc_skb or pci_dma_mapping_error in rtl8180_init_rx_ring fails, the memory allocated by pci_zalloc_consistent is not freed. This patch fixes the bug by adding pci_free_consistent in error handling code. Signed-off-by: Jia-Ju Bai <baijiaju1990@163.com> Signed-off-by: Julian Calaby <julian.calaby@gmail.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:
parent
06d05463ee
commit
e4c8b456c5
@ -1018,6 +1018,8 @@ 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) {
|
||||
pci_free_consistent(priv->pdev, priv->rx_ring_sz * 32,
|
||||
priv->rx_ring, priv->rx_ring_dma);
|
||||
wiphy_err(dev->wiphy, "Cannot allocate RX skb\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
@ -1028,6 +1030,8 @@ static int rtl8180_init_rx_ring(struct ieee80211_hw *dev)
|
||||
|
||||
if (pci_dma_mapping_error(priv->pdev, *mapping)) {
|
||||
kfree_skb(skb);
|
||||
pci_free_consistent(priv->pdev, priv->rx_ring_sz * 32,
|
||||
priv->rx_ring, priv->rx_ring_dma);
|
||||
wiphy_err(dev->wiphy, "Cannot map DMA for RX skb\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user