Skip to content

Commit 49f2a47

Browse files
khoroshilovKalle Valo
authored andcommitted
prism54: fix checks for dma mapping errors
prism54 checks for dma mapping errors by comparison returned address with zero, while pci_dma_mapping_error() should be used. Found by Linux Driver Verification project (linuxtesting.org). Signed-off-by: Alexey Khoroshilov <[email protected]> Signed-off-by: Kalle Valo <[email protected]>
1 parent e47301b commit 49f2a47

File tree

3 files changed

+8
-5
lines changed

3 files changed

+8
-5
lines changed

drivers/net/wireless/intersil/prism54/islpci_dev.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -707,7 +707,9 @@ islpci_alloc_memory(islpci_private *priv)
707707
pci_map_single(priv->pdev, (void *) skb->data,
708708
MAX_FRAGMENT_SIZE_RX + 2,
709709
PCI_DMA_FROMDEVICE);
710-
if (!priv->pci_map_rx_address[counter]) {
710+
if (pci_dma_mapping_error(priv->pdev,
711+
priv->pci_map_rx_address[counter])) {
712+
priv->pci_map_rx_address[counter] = 0;
711713
/* error mapping the buffer to device
712714
accessible memory address */
713715
printk(KERN_ERR "failed to map skb DMA'able\n");

drivers/net/wireless/intersil/prism54/islpci_eth.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ islpci_eth_transmit(struct sk_buff *skb, struct net_device *ndev)
190190
pci_map_address = pci_map_single(priv->pdev,
191191
(void *) skb->data, skb->len,
192192
PCI_DMA_TODEVICE);
193-
if (unlikely(pci_map_address == 0)) {
193+
if (pci_dma_mapping_error(priv->pdev, pci_map_address)) {
194194
printk(KERN_WARNING "%s: cannot map buffer to PCI\n",
195195
ndev->name);
196196
goto drop_free;
@@ -448,7 +448,8 @@ islpci_eth_receive(islpci_private *priv)
448448
pci_map_single(priv->pdev, (void *) skb->data,
449449
MAX_FRAGMENT_SIZE_RX + 2,
450450
PCI_DMA_FROMDEVICE);
451-
if (unlikely(!priv->pci_map_rx_address[index])) {
451+
if (pci_dma_mapping_error(priv->pdev,
452+
priv->pci_map_rx_address[index])) {
452453
/* error mapping the buffer to device accessible memory address */
453454
DEBUG(SHOW_ERROR_MESSAGES,
454455
"Error mapping DMA address\n");

drivers/net/wireless/intersil/prism54/islpci_mgt.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ islpci_mgmt_rx_fill(struct net_device *ndev)
130130
buf->pci_addr = pci_map_single(priv->pdev, buf->mem,
131131
MGMT_FRAME_SIZE,
132132
PCI_DMA_FROMDEVICE);
133-
if (!buf->pci_addr) {
133+
if (pci_dma_mapping_error(priv->pdev, buf->pci_addr)) {
134134
printk(KERN_WARNING
135135
"Failed to make memory DMA'able.\n");
136136
return -ENOMEM;
@@ -217,7 +217,7 @@ islpci_mgt_transmit(struct net_device *ndev, int operation, unsigned long oid,
217217
err = -ENOMEM;
218218
buf.pci_addr = pci_map_single(priv->pdev, buf.mem, frag_len,
219219
PCI_DMA_TODEVICE);
220-
if (!buf.pci_addr) {
220+
if (pci_dma_mapping_error(priv->pdev, buf.pci_addr)) {
221221
printk(KERN_WARNING "%s: cannot map PCI memory for mgmt\n",
222222
ndev->name);
223223
goto error_free;

0 commit comments

Comments
 (0)