Message ID | 956213a5c415c30e7e9f9c20bb50bc5b50ba4d18.1626870761.git.leonro@nvidia.com (mailing list archive) |
---|---|
State | Accepted |
Commit | c2255ff47768c94a0ebc3968f007928bb47ea43b |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net-next] ionic: cleanly release devlink instance | expand |
Context | Check | Description |
---|---|---|
netdev/cover_letter | success | Link |
netdev/fixes_present | success | Link |
netdev/patch_count | success | Link |
netdev/tree_selection | success | Clearly marked for net-next |
netdev/subject_prefix | success | Link |
netdev/cc_maintainers | warning | 2 maintainers not CCed: jiri@nvidia.com jacob.e.keller@intel.com |
netdev/source_inline | success | Was 0 now: 0 |
netdev/verify_signedoff | success | Link |
netdev/module_param | success | Was 0 now: 0 |
netdev/build_32bit | fail | Errors and warnings before: 7 this patch: 7 |
netdev/kdoc | success | Errors and warnings before: 0 this patch: 0 |
netdev/verify_fixes | success | Link |
netdev/checkpatch | success | total: 0 errors, 0 warnings, 0 checks, 27 lines checked |
netdev/build_allmodconfig_warn | fail | Errors and warnings before: 7 this patch: 7 |
netdev/header_inline | success | Link |
On 7/21/21 5:39 AM, Leon Romanovsky wrote: > From: Leon Romanovsky <leonro@nvidia.com> > > The failure to register devlink will leave the system with dangled > devlink resource, which is not cleaned if devlink_port_register() fails. > > In order to remove access to ".registered" field of struct devlink_port, > require both devlink_register and devlink_port_register to success and > check it through device pointer. > > Fixes: fbfb8031533c ("ionic: Add hardware init and device commands") > Reviewed-by: Moshe Shemesh <moshe@nvidia.com> > Signed-off-by: Leon Romanovsky <leonro@nvidia.com> Sure, thanks. Acked-by: Shannon Nelson <snelson@pensando.io> > --- > Future series will remove .registered field from the devlink. > --- > .../net/ethernet/pensando/ionic/ionic_devlink.c | 14 +++++++------- > 1 file changed, 7 insertions(+), 7 deletions(-) > > diff --git a/drivers/net/ethernet/pensando/ionic/ionic_devlink.c b/drivers/net/ethernet/pensando/ionic/ionic_devlink.c > index b41301a5b0df..cd520e4c5522 100644 > --- a/drivers/net/ethernet/pensando/ionic/ionic_devlink.c > +++ b/drivers/net/ethernet/pensando/ionic/ionic_devlink.c > @@ -91,20 +91,20 @@ int ionic_devlink_register(struct ionic *ionic) > attrs.flavour = DEVLINK_PORT_FLAVOUR_PHYSICAL; > devlink_port_attrs_set(&ionic->dl_port, &attrs); > err = devlink_port_register(dl, &ionic->dl_port, 0); > - if (err) > + if (err) { > dev_err(ionic->dev, "devlink_port_register failed: %d\n", err); > - else > - devlink_port_type_eth_set(&ionic->dl_port, > - ionic->lif->netdev); > + devlink_unregister(dl); > + return err; > + } > > - return err; > + devlink_port_type_eth_set(&ionic->dl_port, ionic->lif->netdev); > + return 0; > } > > void ionic_devlink_unregister(struct ionic *ionic) > { > struct devlink *dl = priv_to_devlink(ionic); > > - if (ionic->dl_port.registered) > - devlink_port_unregister(&ionic->dl_port); > + devlink_port_unregister(&ionic->dl_port); > devlink_unregister(dl); > }
Hello: This patch was applied to netdev/net-next.git (refs/heads/master): On Wed, 21 Jul 2021 15:39:44 +0300 you wrote: > From: Leon Romanovsky <leonro@nvidia.com> > > The failure to register devlink will leave the system with dangled > devlink resource, which is not cleaned if devlink_port_register() fails. > > In order to remove access to ".registered" field of struct devlink_port, > require both devlink_register and devlink_port_register to success and > check it through device pointer. > > [...] Here is the summary with links: - [net-next] ionic: cleanly release devlink instance https://git.kernel.org/netdev/net-next/c/c2255ff47768 You are awesome, thank you! -- Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/patchwork/pwbot.html
diff --git a/drivers/net/ethernet/pensando/ionic/ionic_devlink.c b/drivers/net/ethernet/pensando/ionic/ionic_devlink.c index b41301a5b0df..cd520e4c5522 100644 --- a/drivers/net/ethernet/pensando/ionic/ionic_devlink.c +++ b/drivers/net/ethernet/pensando/ionic/ionic_devlink.c @@ -91,20 +91,20 @@ int ionic_devlink_register(struct ionic *ionic) attrs.flavour = DEVLINK_PORT_FLAVOUR_PHYSICAL; devlink_port_attrs_set(&ionic->dl_port, &attrs); err = devlink_port_register(dl, &ionic->dl_port, 0); - if (err) + if (err) { dev_err(ionic->dev, "devlink_port_register failed: %d\n", err); - else - devlink_port_type_eth_set(&ionic->dl_port, - ionic->lif->netdev); + devlink_unregister(dl); + return err; + } - return err; + devlink_port_type_eth_set(&ionic->dl_port, ionic->lif->netdev); + return 0; } void ionic_devlink_unregister(struct ionic *ionic) { struct devlink *dl = priv_to_devlink(ionic); - if (ionic->dl_port.registered) - devlink_port_unregister(&ionic->dl_port); + devlink_port_unregister(&ionic->dl_port); devlink_unregister(dl); }