Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a2185587 authored by Kejian Yan's avatar Kejian Yan Committed by David S. Miller
Browse files

net: hns: Simplify the exception sequence in hns_ppe_init()



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: default avatarJinchuanTian <tianjinchuan1@huawei.com>
Signed-off-by: default avatarKejian Yan <yankejian@huawei.com>
Reviewed-by: default avatarSalil Mehta <salil.mehta@huawei.com>
Signed-off-by: default avatarSalil Mehta <salil.mehta@huawei.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent d592a4a4
Loading
Loading
Loading
Loading
+8 −9
Original line number Diff line number Diff line
@@ -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:
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);
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);
	}

	return ret;
}