staging: qlge: Move devlink registration to be last devlink command

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>
This commit is contained in:
Leon Romanovsky 2021-09-25 14:23:00 +03:00 committed by David S. Miller
parent c89f78e985
commit 6f0b1edd9f
1 changed files with 3 additions and 5 deletions

View File

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