From: Kejian Yan <yankej...@huawei.com>

We need to free all ppe submodule if it fails to initialize ppe by
any fault, so this patch will free all ppe resource before
hns_ppe_init() returns exception situation

Reported-by: JinchuanTian <tianjinchu...@huawei.com>
Signed-off-by: Kejian Yan <yankej...@huawei.com>
Reviewed-by: Salil Mehta <salil.me...@huawei.com>
Signed-off-by: Salil Mehta <salil.me...@huawei.com>
---
 drivers/net/ethernet/hisilicon/hns/hns_dsaf_ppe.c | 17 ++++++++---------
 1 file changed, 8 insertions(+), 9 deletions(-)

diff --git a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_ppe.c 
b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_ppe.c
index 6ea8722..eba406b 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_ppe.c
+++ b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_ppe.c
@@ -496,17 +496,17 @@ void hns_ppe_get_stats(struct hns_ppe_cb *ppe_cb, u64 
*data)
  */
 int hns_ppe_init(struct dsaf_device *dsaf_dev)
 {
-       int i, k;
        int ret;
+       int i;
 
        for (i = 0; i < HNS_PPE_COM_NUM; i++) {
                ret = hns_ppe_common_get_cfg(dsaf_dev, i);
                if (ret)
-                       goto get_ppe_cfg_fail;
+                       goto get_cfg_fail;
 
                ret = hns_rcb_common_get_cfg(dsaf_dev, i);
                if (ret)
-                       goto get_rcb_cfg_fail;
+                       goto get_cfg_fail;
 
                hns_ppe_get_cfg(dsaf_dev->ppe_common[i]);
 
@@ -518,13 +518,12 @@ int hns_ppe_init(struct dsaf_device *dsaf_dev)
 
        return 0;
 
-get_rcb_cfg_fail:
-       hns_ppe_common_free_cfg(dsaf_dev, i);
-get_ppe_cfg_fail:
-       for (k = i - 1; k >= 0; k--) {
-               hns_rcb_common_free_cfg(dsaf_dev, k);
-               hns_ppe_common_free_cfg(dsaf_dev, k);
+get_cfg_fail:
+       for (i = 0; i < HNS_PPE_COM_NUM; i++) {
+               hns_rcb_common_free_cfg(dsaf_dev, i);
+               hns_ppe_common_free_cfg(dsaf_dev, i);
        }
+
        return ret;
 }
 
-- 
2.7.4


Reply via email to