aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/hw/usnic
diff options
context:
space:
mode:
authorParvi Kaustubhi <pkaustub@cisco.com>2019-02-08 13:53:43 -0800
committerJason Gunthorpe <jgg@mellanox.com>2019-02-08 16:21:59 -0700
commit0c236606490b5b356ac3bb885b6417ce09bce63f (patch)
tree70db72f86d263fb459d53765fd1f70e7064dc939 /drivers/infiniband/hw/usnic
parentiw_cxgb4: use tos when finding ipv6 routes (diff)
downloadlinux-dev-0c236606490b5b356ac3bb885b6417ce09bce63f.tar.xz
linux-dev-0c236606490b5b356ac3bb885b6417ce09bce63f.zip
IB/usnic: Fix locking when unregistering
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>
Diffstat (limited to 'drivers/infiniband/hw/usnic')
-rw-r--r--drivers/infiniband/hw/usnic/usnic_ib_main.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/infiniband/hw/usnic/usnic_ib_main.c b/drivers/infiniband/hw/usnic/usnic_ib_main.c
index 577d9301251a..1ec155823716 100644
--- a/drivers/infiniband/hw/usnic/usnic_ib_main.c
+++ b/drivers/infiniband/hw/usnic/usnic_ib_main.c
@@ -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)