This gives upper-level protocols a chance to unregister while the device
is still usable.

Signed-off-by: Bryan O'Sullivan <[EMAIL PROTECTED]>

diff -r a69f8b7a8a04 -r e2916bbf09ed drivers/infiniband/hw/ipath/ipath_driver.c
--- a/drivers/infiniband/hw/ipath/ipath_driver.c        Thu Sep 28 08:57:12 
2006 -0700
+++ b/drivers/infiniband/hw/ipath/ipath_driver.c        Thu Sep 28 08:57:12 
2006 -0700
@@ -536,7 +536,12 @@ static void __devexit ipath_remove_one(s
                return;
 
        dd = pci_get_drvdata(pdev);
-       ipath_unregister_ib_device(dd->verbs_dev);
+
+       if (dd->verbs_dev) {
+               ipath_unregister_ib_device(dd->verbs_dev);
+               dd->verbs_dev = NULL;
+       }
+
        ipath_diag_remove(dd);
        ipath_user_remove(dd);
        ipathfs_remove_device(dd);
@@ -2027,6 +2032,11 @@ static void __exit infinipath_cleanup(vo
        list_for_each_entry_safe(dd, tmp, &ipath_dev_list, ipath_list) {
                spin_unlock_irqrestore(&ipath_devs_lock, flags);
 
+               if (dd->verbs_dev) {
+                       ipath_unregister_ib_device(dd->verbs_dev);
+                       dd->verbs_dev = NULL;
+               }
+
                if (dd->ipath_kregbase)
                        cleanup_device(dd);
 

_______________________________________________
openib-general mailing list
[email protected]
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to