Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 49f2a47d authored by Alexey Khoroshilov's avatar Alexey Khoroshilov Committed by Kalle Valo
Browse files

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: default avatarAlexey Khoroshilov <khoroshilov@ispras.ru>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent e47301b0
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -707,7 +707,9 @@ islpci_alloc_memory(islpci_private *priv)
		    pci_map_single(priv->pdev, (void *) skb->data,
				   MAX_FRAGMENT_SIZE_RX + 2,
				   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
			   accessible memory address */
			printk(KERN_ERR "failed to map skb DMA'able\n");
+3 −2
Original line number Diff line number Diff line
@@ -190,7 +190,7 @@ islpci_eth_transmit(struct sk_buff *skb, struct net_device *ndev)
	pci_map_address = pci_map_single(priv->pdev,
					 (void *) skb->data, skb->len,
					 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",
		       ndev->name);
		goto drop_free;
@@ -448,7 +448,8 @@ islpci_eth_receive(islpci_private *priv)
		    pci_map_single(priv->pdev, (void *) skb->data,
				   MAX_FRAGMENT_SIZE_RX + 2,
				   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 */
			DEBUG(SHOW_ERROR_MESSAGES,
			      "Error mapping DMA address\n");
+2 −2
Original line number Diff line number Diff line
@@ -130,7 +130,7 @@ islpci_mgmt_rx_fill(struct net_device *ndev)
			buf->pci_addr = pci_map_single(priv->pdev, buf->mem,
						       MGMT_FRAME_SIZE,
						       PCI_DMA_FROMDEVICE);
			if (!buf->pci_addr) {
			if (pci_dma_mapping_error(priv->pdev, buf->pci_addr)) {
				printk(KERN_WARNING
				       "Failed to make memory DMA'able.\n");
				return -ENOMEM;
@@ -217,7 +217,7 @@ islpci_mgt_transmit(struct net_device *ndev, int operation, unsigned long oid,
	err = -ENOMEM;
	buf.pci_addr = pci_map_single(priv->pdev, buf.mem, frag_len,
				      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",
		       ndev->name);
		goto error_free;