diff options
-rw-r--r-- | drivers/scsi/bnx2fc/bnx2fc_fcoe.c | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/drivers/scsi/bnx2fc/bnx2fc_fcoe.c b/drivers/scsi/bnx2fc/bnx2fc_fcoe.c index 886938d025cd..a5111f365f69 100644 --- a/drivers/scsi/bnx2fc/bnx2fc_fcoe.c +++ b/drivers/scsi/bnx2fc/bnx2fc_fcoe.c | |||
@@ -1487,13 +1487,13 @@ static void bnx2fc_if_destroy(struct fc_lport *lport) | |||
1487 | static void __bnx2fc_destroy(struct bnx2fc_interface *interface) | 1487 | static void __bnx2fc_destroy(struct bnx2fc_interface *interface) |
1488 | { | 1488 | { |
1489 | struct fc_lport *lport = interface->ctlr.lp; | 1489 | struct fc_lport *lport = interface->ctlr.lp; |
1490 | struct fcoe_port *port = lport_priv(lport); | ||
1490 | 1491 | ||
1491 | bnx2fc_interface_cleanup(interface); | 1492 | bnx2fc_interface_cleanup(interface); |
1492 | bnx2fc_stop(interface); | 1493 | bnx2fc_stop(interface); |
1493 | list_del(&interface->list); | 1494 | list_del(&interface->list); |
1494 | lport = interface->ctlr.lp; | ||
1495 | bnx2fc_interface_put(interface); | 1495 | bnx2fc_interface_put(interface); |
1496 | bnx2fc_if_destroy(lport); | 1496 | queue_work(bnx2fc_wq, &port->destroy_work); |
1497 | } | 1497 | } |
1498 | 1498 | ||
1499 | /** | 1499 | /** |
@@ -1541,11 +1541,7 @@ static void bnx2fc_destroy_work(struct work_struct *work) | |||
1541 | 1541 | ||
1542 | BNX2FC_HBA_DBG(lport, "Entered bnx2fc_destroy_work\n"); | 1542 | BNX2FC_HBA_DBG(lport, "Entered bnx2fc_destroy_work\n"); |
1543 | 1543 | ||
1544 | rtnl_lock(); | ||
1545 | mutex_lock(&bnx2fc_dev_lock); | ||
1546 | bnx2fc_if_destroy(lport); | 1544 | bnx2fc_if_destroy(lport); |
1547 | mutex_unlock(&bnx2fc_dev_lock); | ||
1548 | rtnl_unlock(); | ||
1549 | } | 1545 | } |
1550 | 1546 | ||
1551 | static void bnx2fc_unbind_adapter_devices(struct bnx2fc_hba *hba) | 1547 | static void bnx2fc_unbind_adapter_devices(struct bnx2fc_hba *hba) |