Message ID | 20210216113213.2854324-1-olteanv@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 6b73b7c96a91689b8167b1f7da0e89b997af0736 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net-next] net: dsa: felix: perform teardown on error in felix_setup | 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 | 1 maintainers not CCed: vladimir.oltean@nxp.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 | success | Errors and warnings before: 0 this patch: 0 |
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, 39 lines checked |
netdev/build_allmodconfig_warn | success | Errors and warnings before: 0 this patch: 0 |
netdev/header_inline | success | Link |
netdev/stable | success | Stable not CCed |
Hello: This patch was applied to netdev/net-next.git (refs/heads/master): On Tue, 16 Feb 2021 13:32:13 +0200 you wrote: > From: Vladimir Oltean <vladimir.oltean@nxp.com> > > If the driver fails to probe, it would be nice to not leak memory. > > Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> > --- > I've decided to target this patch towards net-next because: > - no user has complained about this being an issue > - in theory there should be a Fixes: 56051948773e ("net: dsa: ocelot: > add driver for Felix switch family") but the fix already conflicts > with some patches that are in net-next: > * f59fd9cab730 ("net: mscc: ocelot: configure watermarks using devlink-sb") > * c54913c1d4ee ("net: dsa: ocelot: request DSA to fix up lack of address learning on CPU port") > and it would unnecessarily cause maintainance headaches to resolve the > conflicts. > Alternatively I could wait until net-next is merged into net and send > the bugfix at that point, but the result would be the same: the patch > would not be backportable basically anywhere. > > [...] Here is the summary with links: - [net-next] net: dsa: felix: perform teardown on error in felix_setup https://git.kernel.org/netdev/net-next/c/6b73b7c96a91 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/dsa/ocelot/felix.c b/drivers/net/dsa/ocelot/felix.c index 3e72f0a79918..4a300ef41de6 100644 --- a/drivers/net/dsa/ocelot/felix.c +++ b/drivers/net/dsa/ocelot/felix.c @@ -1202,7 +1202,7 @@ static int felix_setup(struct dsa_switch *ds) err = ocelot_init(ocelot); if (err) - return err; + goto out_mdiobus_free; if (ocelot->ptp) { err = ocelot_init_timestamp(ocelot, felix->info->ptp_caps); @@ -1227,7 +1227,7 @@ static int felix_setup(struct dsa_switch *ds) err = ocelot_devlink_sb_register(ocelot); if (err) - return err; + goto out_deinit_ports; for (port = 0; port < ds->num_ports; port++) { if (!dsa_is_cpu_port(ds, port)) @@ -1243,6 +1243,23 @@ static int felix_setup(struct dsa_switch *ds) ds->assisted_learning_on_cpu_port = true; return 0; + +out_deinit_ports: + for (port = 0; port < ocelot->num_phys_ports; port++) { + if (dsa_is_unused_port(ds, port)) + continue; + + ocelot_deinit_port(ocelot, port); + } + + ocelot_deinit_timestamp(ocelot); + ocelot_deinit(ocelot); + +out_mdiobus_free: + if (felix->info->mdio_bus_free) + felix->info->mdio_bus_free(ocelot); + + return err; } static void felix_teardown(struct dsa_switch *ds)