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

Commit 23e55a32 authored by Brandeburg, Jesse's avatar Brandeburg, Jesse Committed by David S. Miller
Browse files

ixgb: fix bug when freeing resources



It was pointed out by Breno Leitao <leitao@linux.vnet.ibm.com> that
ixgb would crash on PPC when an IOMMU was in use, if change_mtu was
called.

It appears to be a pretty simple issue in the driver that wasn't discovered
because most systems don't run with an IOMMU.  The driver needs to only unmap
buffers that are mapped (duh).

CC: Breno Leitao <leitao@linux.vnet.ibm.com>

Signed-off-by: default avatarJesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 1694f25b
Loading
Loading
Loading
Loading
+5 −3
Original line number Original line Diff line number Diff line
@@ -977,15 +977,17 @@ ixgb_clean_rx_ring(struct ixgb_adapter *adapter)


	for (i = 0; i < rx_ring->count; i++) {
	for (i = 0; i < rx_ring->count; i++) {
		buffer_info = &rx_ring->buffer_info[i];
		buffer_info = &rx_ring->buffer_info[i];
		if (buffer_info->skb) {
		if (buffer_info->dma) {

			pci_unmap_single(pdev,
			pci_unmap_single(pdev,
					 buffer_info->dma,
					 buffer_info->dma,
					 buffer_info->length,
					 buffer_info->length,
					 PCI_DMA_FROMDEVICE);
					 PCI_DMA_FROMDEVICE);
			buffer_info->dma = 0;
			buffer_info->length = 0;
		}


		if (buffer_info->skb) {
			dev_kfree_skb(buffer_info->skb);
			dev_kfree_skb(buffer_info->skb);

			buffer_info->skb = NULL;
			buffer_info->skb = NULL;
		}
		}
	}
	}