Commit 66039eb9 authored by Norbert Zulinski's avatar Norbert Zulinski Committed by Tony Nguyen
Browse files

iavf: Fix bad page state



Fix bad page state, free inappropriate page in handling dummy
descriptor. iavf_build_skb now has to check not only if rx_buffer is
NULL but also if size is zero, same thing in iavf_clean_rx_irq.
Without this patch driver would free page that will be used
by napi_build_skb.

Fixes: a9f49e00 ("iavf: Fix handling of dummy receive descriptors")
Signed-off-by: default avatarNorbert Zulinski <norbertx.zulinski@intel.com>
Signed-off-by: default avatarMateusz Palczewski <mateusz.palczewski@intel.com>
Tested-by: default avatarKonrad Jankowski <konrad0.jankowski@intel.com>
Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
parent 96628951
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -1393,7 +1393,7 @@ static struct sk_buff *iavf_build_skb(struct iavf_ring *rx_ring,
#endif
	struct sk_buff *skb;

	if (!rx_buffer)
	if (!rx_buffer || !size)
		return NULL;
	/* prefetch first cache line of first page */
	va = page_address(rx_buffer->page) + rx_buffer->page_offset;
@@ -1551,7 +1551,7 @@ static int iavf_clean_rx_irq(struct iavf_ring *rx_ring, int budget)
		/* exit if we failed to retrieve a buffer */
		if (!skb) {
			rx_ring->rx_stats.alloc_buff_failed++;
			if (rx_buffer)
			if (rx_buffer && size)
				rx_buffer->pagecnt_bias++;
			break;
		}