Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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 <khoroshilov@ispras.ru>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>

authored by

Alexey Khoroshilov and committed by
Kalle Valo
49f2a47d e47301b0

+8 -5
+3 -1
drivers/net/wireless/intersil/prism54/islpci_dev.c
··· 707 707 pci_map_single(priv->pdev, (void *) skb->data, 708 708 MAX_FRAGMENT_SIZE_RX + 2, 709 709 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; 711 713 /* error mapping the buffer to device 712 714 accessible memory address */ 713 715 printk(KERN_ERR "failed to map skb DMA'able\n");
+3 -2
drivers/net/wireless/intersil/prism54/islpci_eth.c
··· 190 190 pci_map_address = pci_map_single(priv->pdev, 191 191 (void *) skb->data, skb->len, 192 192 PCI_DMA_TODEVICE); 193 - if (unlikely(pci_map_address == 0)) { 193 + if (pci_dma_mapping_error(priv->pdev, pci_map_address)) { 194 194 printk(KERN_WARNING "%s: cannot map buffer to PCI\n", 195 195 ndev->name); 196 196 goto drop_free; ··· 448 448 pci_map_single(priv->pdev, (void *) skb->data, 449 449 MAX_FRAGMENT_SIZE_RX + 2, 450 450 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])) { 452 453 /* error mapping the buffer to device accessible memory address */ 453 454 DEBUG(SHOW_ERROR_MESSAGES, 454 455 "Error mapping DMA address\n");
+2 -2
drivers/net/wireless/intersil/prism54/islpci_mgt.c
··· 130 130 buf->pci_addr = pci_map_single(priv->pdev, buf->mem, 131 131 MGMT_FRAME_SIZE, 132 132 PCI_DMA_FROMDEVICE); 133 - if (!buf->pci_addr) { 133 + if (pci_dma_mapping_error(priv->pdev, buf->pci_addr)) { 134 134 printk(KERN_WARNING 135 135 "Failed to make memory DMA'able.\n"); 136 136 return -ENOMEM; ··· 217 217 err = -ENOMEM; 218 218 buf.pci_addr = pci_map_single(priv->pdev, buf.mem, frag_len, 219 219 PCI_DMA_TODEVICE); 220 - if (!buf.pci_addr) { 220 + if (pci_dma_mapping_error(priv->pdev, buf.pci_addr)) { 221 221 printk(KERN_WARNING "%s: cannot map PCI memory for mgmt\n", 222 222 ndev->name); 223 223 goto error_free;