diff options
| author | Somnath Kotur <somnath.kotur@broadcom.com> | 2017-08-30 23:57:31 -0400 |
|---|---|---|
| committer | Doug Ledford <dledford@redhat.com> | 2017-09-22 13:57:32 -0400 |
| commit | 027c892924eac22f5ca8db4100bccde423be797d (patch) | |
| tree | 8ee27827907ef2049d3bfe3d21435c8db475fb97 /drivers | |
| parent | 55311d055175cada8249d39436371afe790df699 (diff) | |
bnxt_re: Free up devices in module_exit path
Clean up all devices added to the bnxt_re_dev_list in the
module_exit entry point.
Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/infiniband/hw/bnxt_re/main.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/infiniband/hw/bnxt_re/main.c b/drivers/infiniband/hw/bnxt_re/main.c index 82d1cbc27aee..00a3b743c156 100644 --- a/drivers/infiniband/hw/bnxt_re/main.c +++ b/drivers/infiniband/hw/bnxt_re/main.c | |||
| @@ -1375,6 +1375,22 @@ err_netdev: | |||
| 1375 | 1375 | ||
| 1376 | static void __exit bnxt_re_mod_exit(void) | 1376 | static void __exit bnxt_re_mod_exit(void) |
| 1377 | { | 1377 | { |
| 1378 | struct bnxt_re_dev *rdev; | ||
| 1379 | LIST_HEAD(to_be_deleted); | ||
| 1380 | |||
| 1381 | mutex_lock(&bnxt_re_dev_lock); | ||
| 1382 | /* Free all adapter allocated resources */ | ||
| 1383 | if (!list_empty(&bnxt_re_dev_list)) | ||
| 1384 | list_splice_init(&bnxt_re_dev_list, &to_be_deleted); | ||
| 1385 | mutex_unlock(&bnxt_re_dev_lock); | ||
| 1386 | |||
| 1387 | list_for_each_entry(rdev, &to_be_deleted, list) { | ||
| 1388 | dev_info(rdev_to_dev(rdev), "Unregistering Device"); | ||
| 1389 | bnxt_re_dev_stop(rdev); | ||
| 1390 | bnxt_re_ib_unreg(rdev, true); | ||
| 1391 | bnxt_re_remove_one(rdev); | ||
| 1392 | bnxt_re_dev_unreg(rdev); | ||
| 1393 | } | ||
| 1378 | unregister_netdevice_notifier(&bnxt_re_netdev_notifier); | 1394 | unregister_netdevice_notifier(&bnxt_re_netdev_notifier); |
| 1379 | if (bnxt_re_wq) | 1395 | if (bnxt_re_wq) |
| 1380 | destroy_workqueue(bnxt_re_wq); | 1396 | destroy_workqueue(bnxt_re_wq); |
