> -----Original Message----- > From: Markus Elfring <Markus.Elfring@xxxxxx> > Sent: Tuesday, February 27, 2024 3:15 PM > To: netdev@xxxxxxxxxxxxxxx; kernel-janitors@xxxxxxxxxxxxxxx; David S. Miller > <davem@xxxxxxxxxxxxx>; Eric Dumazet <edumazet@xxxxxxxxxx>; Jakub > Kicinski <kuba@xxxxxxxxxx>; Madalin Bucur <madalin.bucur@xxxxxxx>; Paolo > Abeni <pabeni@xxxxxxxxxx>; Sean Anderson <sean.anderson@xxxxxxxx> > Cc: LKML <linux-kernel@xxxxxxxxxxxxxxx> > Subject: [PATCH] net: fman: Use common error handling code in dtsec_init() > > 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 Looks good Acked-by: Madalin Bucur <madalin.bucur@xxxxxxxxxxx>