No functional change.

Signed-off-by: Hannes Reinecke <h...@suse.com>
---
 drivers/scsi/fcoe/fcoe.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/drivers/scsi/fcoe/fcoe.c b/drivers/scsi/fcoe/fcoe.c
index 85f9a3e..135bdcf 100644
--- a/drivers/scsi/fcoe/fcoe.c
+++ b/drivers/scsi/fcoe/fcoe.c
@@ -501,11 +501,6 @@ static void fcoe_interface_cleanup(struct fcoe_interface 
*fcoe)
        struct net_device *netdev = fcoe->netdev;
        struct fcoe_ctlr *fip = fcoe_to_ctlr(fcoe);
 
-       rtnl_lock();
-       if (!fcoe->removed)
-               fcoe_interface_remove(fcoe);
-       rtnl_unlock();
-
        /* Release the self-reference taken during fcoe_interface_create() */
        /* tear-down the FCoE controller */
        fcoe_ctlr_destroy(fip);
@@ -2140,6 +2135,11 @@ static void fcoe_destroy_work(struct work_struct *work)
        cdev = fcoe_ctlr_to_ctlr_dev(ctlr);
 
        fcoe_if_destroy(port->lport);
+
+       rtnl_lock();
+       if (!fcoe->removed)
+               fcoe_interface_remove(fcoe);
+       rtnl_unlock();
        fcoe_interface_cleanup(fcoe);
 
        mutex_unlock(&fcoe_config_mutex);
@@ -2254,6 +2254,8 @@ static int _fcoe_create(struct net_device *netdev, enum 
fip_mode fip_mode,
                printk(KERN_ERR "fcoe: Failed to create interface (%s)\n",
                       netdev->name);
                rc = -EIO;
+               if (!fcoe->removed)
+                       fcoe_interface_remove(fcoe);
                rtnl_unlock();
                fcoe_interface_cleanup(fcoe);
                mutex_unlock(&fcoe_config_mutex);
-- 
1.8.5.6

Reply via email to