staging: qlge: Move devlink registration to be last devlink command
authorLeon Romanovsky <leonro@nvidia.com>
Sat, 25 Sep 2021 11:23:00 +0000 (14:23 +0300)
committerDavid S. Miller <davem@davemloft.net>
Mon, 27 Sep 2021 15:32:00 +0000 (16:32 +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/staging/qlge/qlge_main.c

index 33539f6..1dc8493 100644 (file)
@@ -4614,10 +4614,9 @@ static int qlge_probe(struct pci_dev *pdev,
                goto netdev_free;
        }
 
-       devlink_register(devlink);
        err = qlge_health_create_reporters(qdev);
        if (err)
-               goto devlink_unregister;
+               goto netdev_free;
 
        /* Start up the timer to trigger EEH if
         * the bus goes dead
@@ -4628,10 +4627,9 @@ static int qlge_probe(struct pci_dev *pdev,
        qlge_display_dev_info(ndev);
        atomic_set(&qdev->lb_count, 0);
        cards_found++;
+       devlink_register(devlink);
        return 0;
 
-devlink_unregister:
-       devlink_unregister(devlink);
 netdev_free:
        free_netdev(ndev);
 devlink_free:
@@ -4656,13 +4654,13 @@ static void qlge_remove(struct pci_dev *pdev)
        struct net_device *ndev = qdev->ndev;
        struct devlink *devlink = priv_to_devlink(qdev);
 
+       devlink_unregister(devlink);
        del_timer_sync(&qdev->timer);
        qlge_cancel_all_work_sync(qdev);
        unregister_netdev(ndev);
        qlge_release_all(pdev);
        pci_disable_device(pdev);
        devlink_health_reporter_destroy(qdev->reporter);
-       devlink_unregister(devlink);
        devlink_free(devlink);
        free_netdev(ndev);
 }