]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
IB/usnic: Fix locking when unregistering
authorParvi Kaustubhi <pkaustub@cisco.com>
Fri, 8 Feb 2019 21:53:43 +0000 (13:53 -0800)
committerJason Gunthorpe <jgg@mellanox.com>
Fri, 8 Feb 2019 23:21:59 +0000 (16:21 -0700)
Move the call to usnic_ib_device_remove after usnic_ib_ibdev_list_lock has
been released.

Signed-off-by: Parvi Kaustubhi <pkaustub@cisco.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/hw/usnic/usnic_ib_main.c

index 577d9301251ab4e1e96430db461917e90e755db8..1ec155823716026b729320461924c6b4a3fa381e 100644 (file)
@@ -470,15 +470,17 @@ static void usnic_ib_undiscover_pf(struct kref *kref)
                                &usnic_ib_ibdev_list, ib_dev_link) {
                if (us_ibdev->pdev == dev) {
                        list_del(&us_ibdev->ib_dev_link);
-                       usnic_ib_device_remove(us_ibdev);
                        found = true;
                        break;
                }
        }
 
-       WARN(!found, "Failed to remove PF %s\n", pci_name(dev));
 
        mutex_unlock(&usnic_ib_ibdev_list_lock);
+       if (found)
+               usnic_ib_device_remove(us_ibdev);
+       else
+               WARN(1, "Failed to remove PF %s\n", pci_name(dev));
 }
 
 static struct usnic_ib_dev *usnic_ib_discover_pf(struct usnic_vnic *vnic)