summaryrefslogtreecommitdiff
path: root/drivers/target
diff options
context:
space:
mode:
authortangwenji <tang.wenji@zte.com.cn>2018-01-15 15:09:37 +0300
committerNicholas Bellinger <nab@linux-iscsi.org>2018-01-18 12:21:11 +0300
commitc82b59e7c3f81059b1d280e21028c7ac8451dd52 (patch)
tree310323c2fdc4d5b7be2440a4a864968045f73fcd /drivers/target
parent892782caf19a97ccc95df51b3bb659ecacff986a (diff)
downloadlinux-c82b59e7c3f81059b1d280e21028c7ac8451dd52.tar.xz
target: fix destroy device in target_configure_device
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>
Diffstat (limited to 'drivers/target')
-rw-r--r--drivers/target/target_core_device.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/target/target_core_device.c b/drivers/target/target_core_device.c
index e8dd6da164b2..e27db4d45a9d 100644
--- a/drivers/target/target_core_device.c
+++ b/drivers/target/target_core_device.c
@@ -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);