From: Markus Elfring <elfring@xxxxxxxxxxxxxxxxxxxxx> Date: Tue, 27 Feb 2024 14:05:25 +0100 Adjust jump targets so that a bit of exception handling can be better reused at the end of this function implementation. Signed-off-by: Markus Elfring <elfring@xxxxxxxxxxxxxxxxxxxxx> --- .../net/ethernet/freescale/fman/fman_dtsec.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/drivers/net/ethernet/freescale/fman/fman_dtsec.c b/drivers/net/ethernet/freescale/fman/fman_dtsec.c index 3088da7adf0f..1de22400fd89 100644 --- a/drivers/net/ethernet/freescale/fman/fman_dtsec.c +++ b/drivers/net/ethernet/freescale/fman/fman_dtsec.c @@ -1279,9 +1279,8 @@ static int dtsec_init(struct fman_mac *dtsec) dtsec->max_speed, dtsec->addr, dtsec->exceptions, dtsec->tbidev->addr); if (err) { - free_init_resources(dtsec); pr_err("DTSEC version doesn't support this i/f mode\n"); - return err; + goto free_resources; } /* Configure the TBI PHY Control Register */ @@ -1296,23 +1295,21 @@ static int dtsec_init(struct fman_mac *dtsec) err = fman_set_mac_max_frame(dtsec->fm, dtsec->mac_id, max_frm_ln); if (err) { pr_err("Setting max frame length failed\n"); - free_init_resources(dtsec); - return -EINVAL; + err = -EINVAL; + goto free_resources; } dtsec->multicast_addr_hash = alloc_hash_table(EXTENDED_HASH_TABLE_SIZE); if (!dtsec->multicast_addr_hash) { - free_init_resources(dtsec); pr_err("MC hash table is failed\n"); - return -ENOMEM; + goto e_nomem; } dtsec->unicast_addr_hash = alloc_hash_table(DTSEC_HASH_TABLE_SIZE); if (!dtsec->unicast_addr_hash) { - free_init_resources(dtsec); pr_err("UC hash table is failed\n"); - return -ENOMEM; + goto e_nomem; } /* register err intr handler for dtsec to FPM (err) */ @@ -1326,6 +1323,12 @@ static int dtsec_init(struct fman_mac *dtsec) dtsec->dtsec_drv_param = NULL; return 0; + +e_nomem: + err = -ENOMEM; +free_resources: + free_init_resources(dtsec); + return err; } static int dtsec_free(struct fman_mac *dtsec) -- 2.43.2