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: 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>
This commit is contained in:
parent
d592a4a4b9
commit
a2185587ad
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue