]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
fixes for 4.19
authorSasha Levin <sashal@kernel.org>
Thu, 28 Nov 2019 14:59:55 +0000 (09:59 -0500)
committerSasha Levin <sashal@kernel.org>
Thu, 28 Nov 2019 14:59:55 +0000 (09:59 -0500)
Signed-off-by: Sasha Levin <sashal@kernel.org>
queue-4.19/net-hns3-fix-error-handling-int-the-hns3_get_vector_.patch [new file with mode: 0644]
queue-4.19/series

diff --git a/queue-4.19/net-hns3-fix-error-handling-int-the-hns3_get_vector_.patch b/queue-4.19/net-hns3-fix-error-handling-int-the-hns3_get_vector_.patch
new file mode 100644 (file)
index 0000000..6370559
--- /dev/null
@@ -0,0 +1,55 @@
+From 4b01732de5278618d8b013fa300638742392d507 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 18 Dec 2018 19:37:48 +0800
+Subject: net: hns3: fix error handling int the hns3_get_vector_ring_chain
+
+From: Huazhong Tan <tanhuazhong@huawei.com>
+
+[ Upstream commit cda69d244585bc4497d3bb878c22fe2b6ad647c1 ]
+
+When hns3_get_vector_ring_chain() failed in the
+hns3_nic_init_vector_data(), it should do the error handling instead
+of return directly.
+
+Also, cur_chain should be freed instead of chain and head->next should
+be set to NULL in error handling of hns3_get_vector_ring_chain.
+
+This patch fixes them.
+
+Fixes: 73b907a083b8 ("net: hns3: bugfix for buffer not free problem during resetting")
+Signed-off-by: Huazhong Tan <tanhuazhong@huawei.com>
+Signed-off-by: Peng Li <lipeng321@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 | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c
+index 3708f149d0a6a..2f1c4adf1734d 100644
+--- a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c
++++ b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c
+@@ -2597,9 +2597,10 @@ err_free_chain:
+       cur_chain = head->next;
+       while (cur_chain) {
+               chain = cur_chain->next;
+-              devm_kfree(&pdev->dev, chain);
++              devm_kfree(&pdev->dev, cur_chain);
+               cur_chain = chain;
+       }
++      head->next = NULL;
+       return -ENOMEM;
+ }
+@@ -2671,7 +2672,7 @@ static int hns3_nic_init_vector_data(struct hns3_nic_priv *priv)
+               ret = hns3_get_vector_ring_chain(tqp_vector,
+                                                &vector_ring_chain);
+               if (ret)
+-                      return ret;
++                      goto map_ring_fail;
+               ret = h->ae_algo->ops->map_ring_to_vector(h,
+                       tqp_vector->vector_irq, &vector_ring_chain);
+-- 
+2.20.1
+
index 828f04f14e89300cd7884c42964f121c63a7ce17..379223a571265be8b727311b62f517d9edbadd31 100644 (file)
@@ -306,3 +306,4 @@ powerpc-book3s64-fix-link-stack-flush-on-context-switch.patch
 kvm-ppc-book3s-hv-flush-link-stack-on-guest-exit-to-host-kernel.patch
 net-sysfs-fix-netdev_queue_add_kobject-breakage.patch
 pm-devfreq-fix-kernel-oops-on-governor-module-load.patch
+net-hns3-fix-error-handling-int-the-hns3_get_vector_.patch