Blob Blame History Raw
From: Peng Li <lipeng321@huawei.com>
Date: Sun, 14 Apr 2019 09:47:45 +0800
Subject: net: hns3: free the pending skb when clean RX ring
Patch-mainline: v5.2-rc1
Git-commit: cc5ff6e90f808f9a4c8229bf2f1de0dfe5d7931c
References: bsc#1104353 FATE#326415 bsc#1135044

If there is pending skb in RX flow when close the port, and the
pending buffer is not cleaned, the new packet will be added to
the pending skb when the port opens again, and the first new
packet has error data.

This patch cleans the pending skb when clean RX ring.

Signed-off-by: Peng Li <lipeng321@huawei.com>
Signed-off-by: Huazhong Tan <tanhuazhong@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Acked-by: Thomas Bogendoerfer <tbogendoerfer@suse.de>
---
 drivers/net/ethernet/hisilicon/hns3/hns3_enet.c |    7 +++++++
 1 file changed, 7 insertions(+)

--- a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c
@@ -3959,6 +3959,13 @@ static int hns3_clear_rx_ring(struct hns
 		ring_ptr_move_fw(ring, next_to_use);
 	}
 
+	/* Free the pending skb in rx ring */
+	if (ring->skb) {
+		dev_kfree_skb_any(ring->skb);
+		ring->skb = NULL;
+		ring->pending_buf = 0;
+	}
+
 	return 0;
 }