OSDN Git Service

netdevsim: Move devlink registration to be last devlink command
authorLeon Romanovsky <leonro@nvidia.com>
Sat, 25 Sep 2021 11:22:57 +0000 (14:22 +0300)
committerDavid S. Miller <davem@davemloft.net>
Mon, 27 Sep 2021 15:31:59 +0000 (16:31 +0100)
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>
drivers/net/netdevsim/dev.c

index b2214bc..cb66450 100644 (file)
@@ -1470,7 +1470,6 @@ int nsim_dev_probe(struct nsim_bus_dev *nsim_bus_dev)
        if (err)
                goto err_devlink_free;
 
-       devlink_register(devlink);
        err = devlink_params_register(devlink, nsim_devlink_params,
                                      ARRAY_SIZE(nsim_devlink_params));
        if (err)
@@ -1511,9 +1510,9 @@ int nsim_dev_probe(struct nsim_bus_dev *nsim_bus_dev)
        if (err)
                goto err_psample_exit;
 
-       devlink_params_publish(devlink);
-       devlink_reload_enable(devlink);
        nsim_dev->esw_mode = DEVLINK_ESWITCH_MODE_LEGACY;
+       devlink_register(devlink);
+       devlink_reload_enable(devlink);
        return 0;
 
 err_psample_exit:
@@ -1534,7 +1533,6 @@ err_params_unregister:
        devlink_params_unregister(devlink, nsim_devlink_params,
                                  ARRAY_SIZE(nsim_devlink_params));
 err_dl_unregister:
-       devlink_unregister(devlink);
        devlink_resources_unregister(devlink, NULL);
 err_devlink_free:
        devlink_free(devlink);
@@ -1569,6 +1567,7 @@ void nsim_dev_remove(struct nsim_bus_dev *nsim_bus_dev)
        struct devlink *devlink = priv_to_devlink(nsim_dev);
 
        devlink_reload_disable(devlink);
+       devlink_unregister(devlink);
 
        nsim_dev_reload_destroy(nsim_dev);
 
@@ -1576,7 +1575,6 @@ void nsim_dev_remove(struct nsim_bus_dev *nsim_bus_dev)
        nsim_dev_debugfs_exit(nsim_dev);
        devlink_params_unregister(devlink, nsim_devlink_params,
                                  ARRAY_SIZE(nsim_devlink_params));
-       devlink_unregister(devlink);
        devlink_resources_unregister(devlink, NULL);
        devlink_free(devlink);
 }