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

Commit fd3686a8 authored by Mallikarjuna R Chilakala's avatar Mallikarjuna R Chilakala Committed by David S. Miller
Browse files

ixgbe: Set IXGBE_RSC_CB(skb)->DMA field to zero after unmapping the address



As per Simon Horman's feedback set IXGBE_RSC_CB(skb)->dma to zero
after unmapping HWRSC DMA address to avoid double freeing.

Signed-off-by: default avatarMallikarjuna R Chilakala <mallikarjuna.chilakala@intel.com>
Acked-by: default avatarPeter P Waskiewicz Jr <peter.p.waskiewicz.jr@intel.com>
Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 936332b8
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -935,10 +935,12 @@ static bool ixgbe_clean_rx_irq(struct ixgbe_q_vector *q_vector,
			if (skb->prev)
				skb = ixgbe_transform_rsc_queue(skb, &(rx_ring->rsc_count));
			if (adapter->flags2 & IXGBE_FLAG2_RSC_ENABLED) {
				if (IXGBE_RSC_CB(skb)->dma)
				if (IXGBE_RSC_CB(skb)->dma) {
					pci_unmap_single(pdev, IXGBE_RSC_CB(skb)->dma,
					                 rx_ring->rx_buf_len,
					                 PCI_DMA_FROMDEVICE);
					IXGBE_RSC_CB(skb)->dma = 0;
				}
				if (rx_ring->flags & IXGBE_RING_RX_PS_ENABLED)
					rx_ring->rsc_count += skb_shinfo(skb)->nr_frags;
				else
@@ -3126,10 +3128,12 @@ static void ixgbe_clean_rx_ring(struct ixgbe_adapter *adapter,
			rx_buffer_info->skb = NULL;
			do {
				struct sk_buff *this = skb;
				if (IXGBE_RSC_CB(this)->dma)
				if (IXGBE_RSC_CB(this)->dma) {
					pci_unmap_single(pdev, IXGBE_RSC_CB(this)->dma,
					                 rx_ring->rx_buf_len,
					                 PCI_DMA_FROMDEVICE);
					IXGBE_RSC_CB(this)->dma = 0;
				}
				skb = skb->prev;
				dev_kfree_skb(this);
			} while (skb);