target: fix destroy device in target_configure_device
authortangwenji <tang.wenji@zte.com.cn>
Mon, 15 Jan 2018 12:09:37 +0000 (20:09 +0800)
committerNicholas Bellinger <nab@linux-iscsi.org>
Thu, 18 Jan 2018 09:21:11 +0000 (01:21 -0800)
After dev->transport->configure_device succeeds, target_configure_device
exits abnormally, dev_flags has not set DF_CONFIGURED yet, does not call
destroy_device function in free_device.

Signed-off-by: tangwenji <tang.wenji@zte.com.cn>
Acked-by: Mike Christie <mchristi@redhat.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
drivers/target/target_core_device.c

index e8dd6da164b28550f42d4909afed480291cc29ab..e27db4d45a9d34bf1e171d298fda4719af1c1725 100644 (file)
@@ -997,7 +997,7 @@ int target_configure_device(struct se_device *dev)
 
        ret = core_setup_alua(dev);
        if (ret)
-               goto out_free_index;
+               goto out_destroy_device;
 
        /*
         * Startup the struct se_device processing thread
@@ -1041,6 +1041,8 @@ int target_configure_device(struct se_device *dev)
 
 out_free_alua:
        core_alua_free_lu_gp_mem(dev);
+out_destroy_device:
+       dev->transport->destroy_device(dev);
 out_free_index:
        mutex_lock(&device_mutex);
        idr_remove(&devices_idr, dev->dev_index);