2021-11-30 04:20:39

by Dongliang Mu

[permalink] [raw]
Subject: [PATCH] dpaa2-eth: add error handling code for dpaa2_eth_dl_register

The commit bbb9ae25fc67 ("dpaa2-eth: Register devlink instance at the end
of probe") moves dpaa2_eth_dl_register at the end of dpaa2_eth_probe.
However, dpaa2_eth_dl_register can return errno when memory allocation or
devlink_register fails.

Fix this by adding error handling code for dpaa2_eth_dl_register

Fixes: bbb9ae25fc67 ("dpaa2-eth: Register devlink instance at the end of probe")
Signed-off-by: Dongliang Mu <[email protected]>
---
drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
index 6451c8383639..4bb2b838fa50 100644
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
@@ -4442,7 +4442,7 @@ static int dpaa2_eth_probe(struct fsl_mc_device *dpni_dev)

err = dpaa2_eth_dl_alloc(priv);
if (err)
- goto err_dl_register;
+ goto err_dl_alloc;

err = dpaa2_eth_dl_traps_register(priv);
if (err)
@@ -4462,17 +4462,26 @@ static int dpaa2_eth_probe(struct fsl_mc_device *dpni_dev)
dpaa2_dbg_add(priv);
#endif

- dpaa2_eth_dl_register(priv);
+ err = dpaa2_eth_dl_register(priv);
+ if (err < 0) {
+ dev_err(dev, "dpaa2_eth_dl_register failed\n");
+ goto err_dl_register;
+ }
dev_info(dev, "Probed interface %s\n", net_dev->name);
return 0;

+err_dl_register:
+#ifdef CONFIG_DEBUG_FS
+ dpaa2_dbg_remove(priv);
+#endif
+ unregister_netdev(net_dev);
err_netdev_reg:
dpaa2_eth_dl_port_del(priv);
err_dl_port_add:
dpaa2_eth_dl_traps_unregister(priv);
err_dl_trap_register:
dpaa2_eth_dl_free(priv);
-err_dl_register:
+err_dl_alloc:
dpaa2_eth_disconnect_mac(priv);
err_connect_mac:
if (priv->do_link_poll)
--
2.25.1



2021-12-01 12:04:36

by kernel test robot

[permalink] [raw]
Subject: Re: [PATCH] dpaa2-eth: add error handling code for dpaa2_eth_dl_register

Hi Dongliang,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on linus/master]
[also build test ERROR on v5.16-rc3 next-20211201]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url: https://github.com/0day-ci/linux/commits/Dongliang-Mu/dpaa2-eth-add-error-handling-code-for-dpaa2_eth_dl_register/20211130-122101
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git d58071a8a76d779eedab38033ae4c821c30295a5
config: arm64-defconfig (https://download.01.org/0day-ci/archive/20211201/[email protected]/config)
compiler: aarch64-linux-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/0day-ci/linux/commit/8c2f20e67d1f8605b042655d121a18f5ce61faa7
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Dongliang-Mu/dpaa2-eth-add-error-handling-code-for-dpaa2_eth_dl_register/20211130-122101
git checkout 8c2f20e67d1f8605b042655d121a18f5ce61faa7
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=arm64 SHELL=/bin/bash drivers/net/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>

All errors (new ones prefixed by >>):

drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c: In function 'dpaa2_eth_probe':
>> drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c:4465:13: error: void value not ignored as it ought to be
4465 | err = dpaa2_eth_dl_register(priv);
| ^


vim +4465 drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c

4464
> 4465 err = dpaa2_eth_dl_register(priv);
4466 if (err < 0) {
4467 dev_err(dev, "dpaa2_eth_dl_register failed\n");
4468 goto err_dl_register;
4469 }
4470 dev_info(dev, "Probed interface %s\n", net_dev->name);
4471 return 0;
4472
4473 err_dl_register:
4474 #ifdef CONFIG_DEBUG_FS
4475 dpaa2_dbg_remove(priv);
4476 #endif
4477 unregister_netdev(net_dev);
4478 err_netdev_reg:
4479 dpaa2_eth_dl_port_del(priv);
4480 err_dl_port_add:
4481 dpaa2_eth_dl_traps_unregister(priv);
4482 err_dl_trap_register:
4483 dpaa2_eth_dl_free(priv);
4484 err_dl_alloc:
4485 dpaa2_eth_disconnect_mac(priv);
4486 err_connect_mac:
4487 if (priv->do_link_poll)
4488 kthread_stop(priv->poll_thread);
4489 else
4490 fsl_mc_free_irqs(dpni_dev);
4491 err_poll_thread:
4492 dpaa2_eth_free_rings(priv);
4493 err_alloc_rings:
4494 err_csum:
4495 err_netdev_init:
4496 free_percpu(priv->sgt_cache);
4497 err_alloc_sgt_cache:
4498 free_percpu(priv->percpu_extras);
4499 err_alloc_percpu_extras:
4500 free_percpu(priv->percpu_stats);
4501 err_alloc_percpu_stats:
4502 dpaa2_eth_del_ch_napi(priv);
4503 err_bind:
4504 dpaa2_eth_free_dpbp(priv);
4505 err_dpbp_setup:
4506 dpaa2_eth_free_dpio(priv);
4507 err_dpio_setup:
4508 dpaa2_eth_free_dpni(priv);
4509 err_dpni_setup:
4510 fsl_mc_portal_free(priv->mc_io);
4511 err_portal_alloc:
4512 destroy_workqueue(priv->dpaa2_ptp_wq);
4513 err_wq_alloc:
4514 dev_set_drvdata(dev, NULL);
4515 free_netdev(net_dev);
4516
4517 return err;
4518 }
4519

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]

2021-12-01 12:25:12

by Dongliang Mu

[permalink] [raw]
Subject: Re: [PATCH] dpaa2-eth: add error handling code for dpaa2_eth_dl_register

On Wed, Dec 1, 2021 at 8:04 PM kernel test robot <[email protected]> wrote:
>
> Hi Dongliang,
>
> Thank you for the patch! Yet something to improve:
>
> [auto build test ERROR on linus/master]
> [also build test ERROR on v5.16-rc3 next-20211201]
> [If your patch is applied to the wrong git tree, kindly drop us a note.
> And when submitting patch, we suggest to use '--base' as documented in
> https://git-scm.com/docs/git-format-patch]
>
> url: https://github.com/0day-ci/linux/commits/Dongliang-Mu/dpaa2-eth-add-error-handling-code-for-dpaa2_eth_dl_register/20211130-122101
> base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git d58071a8a76d779eedab38033ae4c821c30295a5
> config: arm64-defconfig (https://download.01.org/0day-ci/archive/20211201/[email protected]/config)
> compiler: aarch64-linux-gcc (GCC) 11.2.0
> reproduce (this is a W=1 build):
> wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> chmod +x ~/bin/make.cross
> # https://github.com/0day-ci/linux/commit/8c2f20e67d1f8605b042655d121a18f5ce61faa7
> git remote add linux-review https://github.com/0day-ci/linux
> git fetch --no-tags linux-review Dongliang-Mu/dpaa2-eth-add-error-handling-code-for-dpaa2_eth_dl_register/20211130-122101
> git checkout 8c2f20e67d1f8605b042655d121a18f5ce61faa7
> # save the config file to linux build tree
> mkdir build_dir
> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=arm64 SHELL=/bin/bash drivers/net/
>
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <[email protected]>
>
> All errors (new ones prefixed by >>):
>
> drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c: In function 'dpaa2_eth_probe':
> >> drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c:4465:13: error: void value not ignored as it ought to be
> 4465 | err = dpaa2_eth_dl_register(priv);
> | ^
>

Hi all,

please ignore my stupid patch.

>
> vim +4465 drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
>
> 4464
> > 4465 err = dpaa2_eth_dl_register(priv);
> 4466 if (err < 0) {
> 4467 dev_err(dev, "dpaa2_eth_dl_register failed\n");
> 4468 goto err_dl_register;
> 4469 }
> 4470 dev_info(dev, "Probed interface %s\n", net_dev->name);
> 4471 return 0;
> 4472
> 4473 err_dl_register:
> 4474 #ifdef CONFIG_DEBUG_FS
> 4475 dpaa2_dbg_remove(priv);
> 4476 #endif
> 4477 unregister_netdev(net_dev);
> 4478 err_netdev_reg:
> 4479 dpaa2_eth_dl_port_del(priv);
> 4480 err_dl_port_add:
> 4481 dpaa2_eth_dl_traps_unregister(priv);
> 4482 err_dl_trap_register:
> 4483 dpaa2_eth_dl_free(priv);
> 4484 err_dl_alloc:
> 4485 dpaa2_eth_disconnect_mac(priv);
> 4486 err_connect_mac:
> 4487 if (priv->do_link_poll)
> 4488 kthread_stop(priv->poll_thread);
> 4489 else
> 4490 fsl_mc_free_irqs(dpni_dev);
> 4491 err_poll_thread:
> 4492 dpaa2_eth_free_rings(priv);
> 4493 err_alloc_rings:
> 4494 err_csum:
> 4495 err_netdev_init:
> 4496 free_percpu(priv->sgt_cache);
> 4497 err_alloc_sgt_cache:
> 4498 free_percpu(priv->percpu_extras);
> 4499 err_alloc_percpu_extras:
> 4500 free_percpu(priv->percpu_stats);
> 4501 err_alloc_percpu_stats:
> 4502 dpaa2_eth_del_ch_napi(priv);
> 4503 err_bind:
> 4504 dpaa2_eth_free_dpbp(priv);
> 4505 err_dpbp_setup:
> 4506 dpaa2_eth_free_dpio(priv);
> 4507 err_dpio_setup:
> 4508 dpaa2_eth_free_dpni(priv);
> 4509 err_dpni_setup:
> 4510 fsl_mc_portal_free(priv->mc_io);
> 4511 err_portal_alloc:
> 4512 destroy_workqueue(priv->dpaa2_ptp_wq);
> 4513 err_wq_alloc:
> 4514 dev_set_drvdata(dev, NULL);
> 4515 free_netdev(net_dev);
> 4516
> 4517 return err;
> 4518 }
> 4519
>
> ---
> 0-DAY CI Kernel Test Service, Intel Corporation
> https://lists.01.org/hyperkitty/list/[email protected]