Skip to content

Commit

Permalink
net: hns: Simplify the exception sequence in hns_ppe_init()
Browse files Browse the repository at this point in the history
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 <tianjinchuan1@huawei.com>
Signed-off-by: Kejian Yan <yankejian@huawei.com>
Reviewed-by: Salil Mehta <salil.mehta@huawei.com>
Signed-off-by: Salil Mehta <salil.mehta@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Kejian Yan authored and David S. Miller committed Apr 3, 2017
1 parent d592a4a commit a218558
Showing 1 changed file with 8 additions and 9 deletions.
17 changes: 8 additions & 9 deletions drivers/net/ethernet/hisilicon/hns/hns_dsaf_ppe.c
Original file line number Diff line number Diff line change
Expand Up @@ -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]);

Expand All @@ -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;
}

Expand Down

0 comments on commit a218558

Please sign in to comment.