mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-25 05:34:00 +08:00
ipw2x00: add checks for dma mapping errors
ipw2100_alloc_skb() and ipw2100_tx_send_data() do not check if mapping dma memory succeed. The patch adds the checks and failure handling. Found by Linux Driver Verification project (linuxtesting.org). Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:
parent
ee548d4b10
commit
f7b7caa488
@ -2311,8 +2311,10 @@ static int ipw2100_alloc_skb(struct ipw2100_priv *priv,
|
||||
packet->dma_addr = pci_map_single(priv->pci_dev, packet->skb->data,
|
||||
sizeof(struct ipw2100_rx),
|
||||
PCI_DMA_FROMDEVICE);
|
||||
/* NOTE: pci_map_single does not return an error code, and 0 is a valid
|
||||
* dma_addr */
|
||||
if (pci_dma_mapping_error(priv->pci_dev, packet->dma_addr)) {
|
||||
dev_kfree_skb(packet->skb);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -3183,6 +3185,11 @@ static void ipw2100_tx_send_data(struct ipw2100_priv *priv)
|
||||
LIBIPW_3ADDR_LEN,
|
||||
tbd->buf_length,
|
||||
PCI_DMA_TODEVICE);
|
||||
if (pci_dma_mapping_error(priv->pci_dev,
|
||||
tbd->host_addr)) {
|
||||
IPW_DEBUG_TX("dma mapping error\n");
|
||||
break;
|
||||
}
|
||||
|
||||
IPW_DEBUG_TX("data frag tbd TX%d P=%08x L=%d\n",
|
||||
txq->next, tbd->host_addr,
|
||||
|
Loading…
Reference in New Issue
Block a user