| From 0d0e226c72433ed6cb986d2afac214c89bcd6673 Mon Sep 17 00:00:00 2001 |
| 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 |
| |
| [ Upstream commit cc5ff6e90f808f9a4c8229bf2f1de0dfe5d7931c ] |
| |
| 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> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/ethernet/hisilicon/hns3/hns3_enet.c | 7 +++++++ |
| 1 file changed, 7 insertions(+) |
| |
| diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c |
| index 0208efe282775..d6b488c2de332 100644 |
| --- a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c |
| +++ b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c |
| @@ -3851,6 +3851,13 @@ static int hns3_clear_rx_ring(struct hns3_enet_ring *ring) |
| 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; |
| } |
| |
| -- |
| 2.20.1 |
| |