Skip to content

Commit

Permalink
net: dsa: Move devlink registration to be last devlink command
Browse files Browse the repository at this point in the history
This change prevents from users to access device before devlink
is fully configured.

Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Leon Romanovsky authored and David S. Miller committed Sep 27, 2021
1 parent 6f0b1ed commit bd936bd
Showing 1 changed file with 4 additions and 6 deletions.
10 changes: 4 additions & 6 deletions net/dsa/dsa2.c
Original file line number Diff line number Diff line change
Expand Up @@ -848,7 +848,6 @@ static int dsa_switch_setup(struct dsa_switch *ds)
dl_priv = devlink_priv(ds->devlink);
dl_priv->ds = ds;

devlink_register(ds->devlink);
/* Setup devlink port instances now, so that the switch
* setup() can register regions etc, against the ports
*/
Expand All @@ -874,8 +873,6 @@ static int dsa_switch_setup(struct dsa_switch *ds)
if (err)
goto teardown;

devlink_params_publish(ds->devlink);

if (!ds->slave_mii_bus && ds->ops->phy_read) {
ds->slave_mii_bus = mdiobus_alloc();
if (!ds->slave_mii_bus) {
Expand All @@ -891,7 +888,7 @@ static int dsa_switch_setup(struct dsa_switch *ds)
}

ds->setup = true;

devlink_register(ds->devlink);
return 0;

free_slave_mii_bus:
Expand All @@ -906,7 +903,6 @@ static int dsa_switch_setup(struct dsa_switch *ds)
list_for_each_entry(dp, &ds->dst->ports, list)
if (dp->ds == ds)
dsa_port_devlink_teardown(dp);
devlink_unregister(ds->devlink);
devlink_free(ds->devlink);
ds->devlink = NULL;
return err;
Expand All @@ -919,6 +915,9 @@ static void dsa_switch_teardown(struct dsa_switch *ds)
if (!ds->setup)
return;

if (ds->devlink)
devlink_unregister(ds->devlink);

if (ds->slave_mii_bus && ds->ops->phy_read) {
mdiobus_unregister(ds->slave_mii_bus);
mdiobus_free(ds->slave_mii_bus);
Expand All @@ -934,7 +933,6 @@ static void dsa_switch_teardown(struct dsa_switch *ds)
list_for_each_entry(dp, &ds->dst->ports, list)
if (dp->ds == ds)
dsa_port_devlink_teardown(dp);
devlink_unregister(ds->devlink);
devlink_free(ds->devlink);
ds->devlink = NULL;
}
Expand Down

0 comments on commit bd936bd

Please sign in to comment.