mirror of
https://github.com/fail0verflow/switch-linux.git
synced 2025-05-04 02:34:21 -04:00
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>
This commit is contained in:
parent
e47301b06d
commit
49f2a47d91
3 changed files with 8 additions and 5 deletions
|
@ -707,7 +707,9 @@ islpci_alloc_memory(islpci_private *priv)
|
||||||
pci_map_single(priv->pdev, (void *) skb->data,
|
pci_map_single(priv->pdev, (void *) skb->data,
|
||||||
MAX_FRAGMENT_SIZE_RX + 2,
|
MAX_FRAGMENT_SIZE_RX + 2,
|
||||||
PCI_DMA_FROMDEVICE);
|
PCI_DMA_FROMDEVICE);
|
||||||
if (!priv->pci_map_rx_address[counter]) {
|
if (pci_dma_mapping_error(priv->pdev,
|
||||||
|
priv->pci_map_rx_address[counter])) {
|
||||||
|
priv->pci_map_rx_address[counter] = 0;
|
||||||
/* error mapping the buffer to device
|
/* error mapping the buffer to device
|
||||||
accessible memory address */
|
accessible memory address */
|
||||||
printk(KERN_ERR "failed to map skb DMA'able\n");
|
printk(KERN_ERR "failed to map skb DMA'able\n");
|
||||||
|
|
|
@ -190,7 +190,7 @@ islpci_eth_transmit(struct sk_buff *skb, struct net_device *ndev)
|
||||||
pci_map_address = pci_map_single(priv->pdev,
|
pci_map_address = pci_map_single(priv->pdev,
|
||||||
(void *) skb->data, skb->len,
|
(void *) skb->data, skb->len,
|
||||||
PCI_DMA_TODEVICE);
|
PCI_DMA_TODEVICE);
|
||||||
if (unlikely(pci_map_address == 0)) {
|
if (pci_dma_mapping_error(priv->pdev, pci_map_address)) {
|
||||||
printk(KERN_WARNING "%s: cannot map buffer to PCI\n",
|
printk(KERN_WARNING "%s: cannot map buffer to PCI\n",
|
||||||
ndev->name);
|
ndev->name);
|
||||||
goto drop_free;
|
goto drop_free;
|
||||||
|
@ -448,7 +448,8 @@ islpci_eth_receive(islpci_private *priv)
|
||||||
pci_map_single(priv->pdev, (void *) skb->data,
|
pci_map_single(priv->pdev, (void *) skb->data,
|
||||||
MAX_FRAGMENT_SIZE_RX + 2,
|
MAX_FRAGMENT_SIZE_RX + 2,
|
||||||
PCI_DMA_FROMDEVICE);
|
PCI_DMA_FROMDEVICE);
|
||||||
if (unlikely(!priv->pci_map_rx_address[index])) {
|
if (pci_dma_mapping_error(priv->pdev,
|
||||||
|
priv->pci_map_rx_address[index])) {
|
||||||
/* error mapping the buffer to device accessible memory address */
|
/* error mapping the buffer to device accessible memory address */
|
||||||
DEBUG(SHOW_ERROR_MESSAGES,
|
DEBUG(SHOW_ERROR_MESSAGES,
|
||||||
"Error mapping DMA address\n");
|
"Error mapping DMA address\n");
|
||||||
|
|
|
@ -130,7 +130,7 @@ islpci_mgmt_rx_fill(struct net_device *ndev)
|
||||||
buf->pci_addr = pci_map_single(priv->pdev, buf->mem,
|
buf->pci_addr = pci_map_single(priv->pdev, buf->mem,
|
||||||
MGMT_FRAME_SIZE,
|
MGMT_FRAME_SIZE,
|
||||||
PCI_DMA_FROMDEVICE);
|
PCI_DMA_FROMDEVICE);
|
||||||
if (!buf->pci_addr) {
|
if (pci_dma_mapping_error(priv->pdev, buf->pci_addr)) {
|
||||||
printk(KERN_WARNING
|
printk(KERN_WARNING
|
||||||
"Failed to make memory DMA'able.\n");
|
"Failed to make memory DMA'able.\n");
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
@ -217,7 +217,7 @@ islpci_mgt_transmit(struct net_device *ndev, int operation, unsigned long oid,
|
||||||
err = -ENOMEM;
|
err = -ENOMEM;
|
||||||
buf.pci_addr = pci_map_single(priv->pdev, buf.mem, frag_len,
|
buf.pci_addr = pci_map_single(priv->pdev, buf.mem, frag_len,
|
||||||
PCI_DMA_TODEVICE);
|
PCI_DMA_TODEVICE);
|
||||||
if (!buf.pci_addr) {
|
if (pci_dma_mapping_error(priv->pdev, buf.pci_addr)) {
|
||||||
printk(KERN_WARNING "%s: cannot map PCI memory for mgmt\n",
|
printk(KERN_WARNING "%s: cannot map PCI memory for mgmt\n",
|
||||||
ndev->name);
|
ndev->name);
|
||||||
goto error_free;
|
goto error_free;
|
||||||
|
|
Loading…
Add table
Reference in a new issue