aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/target
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/target')
-rw-r--r--drivers/target/iscsi/iscsi_target_parameters.c2
-rw-r--r--drivers/target/iscsi/iscsi_target_tpg.c25
2 files changed, 16 insertions, 11 deletions
diff --git a/drivers/target/iscsi/iscsi_target_parameters.c b/drivers/target/iscsi/iscsi_target_parameters.c
index ed5241e7f12a..0c4760fabfc0 100644
--- a/drivers/target/iscsi/iscsi_target_parameters.c
+++ b/drivers/target/iscsi/iscsi_target_parameters.c
@@ -681,7 +681,7 @@ int iscsi_update_param_value(struct iscsi_param *param, char *value)
681 param->value = kzalloc(strlen(value) + 1, GFP_KERNEL); 681 param->value = kzalloc(strlen(value) + 1, GFP_KERNEL);
682 if (!param->value) { 682 if (!param->value) {
683 pr_err("Unable to allocate memory for value.\n"); 683 pr_err("Unable to allocate memory for value.\n");
684 return -1; 684 return -ENOMEM;
685 } 685 }
686 686
687 memcpy(param->value, value, strlen(value)); 687 memcpy(param->value, value, strlen(value));
diff --git a/drivers/target/iscsi/iscsi_target_tpg.c b/drivers/target/iscsi/iscsi_target_tpg.c
index 142989598aea..a38a3f8ab0d9 100644
--- a/drivers/target/iscsi/iscsi_target_tpg.c
+++ b/drivers/target/iscsi/iscsi_target_tpg.c
@@ -303,6 +303,7 @@ int iscsit_tpg_enable_portal_group(struct iscsi_portal_group *tpg)
303{ 303{
304 struct iscsi_param *param; 304 struct iscsi_param *param;
305 struct iscsi_tiqn *tiqn = tpg->tpg_tiqn; 305 struct iscsi_tiqn *tiqn = tpg->tpg_tiqn;
306 int ret;
306 307
307 spin_lock(&tpg->tpg_state_lock); 308 spin_lock(&tpg->tpg_state_lock);
308 if (tpg->tpg_state == TPG_STATE_ACTIVE) { 309 if (tpg->tpg_state == TPG_STATE_ACTIVE) {
@@ -319,19 +320,19 @@ int iscsit_tpg_enable_portal_group(struct iscsi_portal_group *tpg)
319 param = iscsi_find_param_from_key(AUTHMETHOD, tpg->param_list); 320 param = iscsi_find_param_from_key(AUTHMETHOD, tpg->param_list);
320 if (!param) { 321 if (!param) {
321 spin_unlock(&tpg->tpg_state_lock); 322 spin_unlock(&tpg->tpg_state_lock);
322 return -ENOMEM; 323 return -EINVAL;
323 } 324 }
324 325
325 if (ISCSI_TPG_ATTRIB(tpg)->authentication) { 326 if (ISCSI_TPG_ATTRIB(tpg)->authentication) {
326 if (!strcmp(param->value, NONE)) 327 if (!strcmp(param->value, NONE)) {
327 if (iscsi_update_param_value(param, CHAP) < 0) { 328 ret = iscsi_update_param_value(param, CHAP);
328 spin_unlock(&tpg->tpg_state_lock); 329 if (ret)
329 return -ENOMEM; 330 goto err;
330 }
331 if (iscsit_ta_authentication(tpg, 1) < 0) {
332 spin_unlock(&tpg->tpg_state_lock);
333 return -ENOMEM;
334 } 331 }
332
333 ret = iscsit_ta_authentication(tpg, 1);
334 if (ret < 0)
335 goto err;
335 } 336 }
336 337
337 tpg->tpg_state = TPG_STATE_ACTIVE; 338 tpg->tpg_state = TPG_STATE_ACTIVE;
@@ -344,6 +345,10 @@ int iscsit_tpg_enable_portal_group(struct iscsi_portal_group *tpg)
344 spin_unlock(&tiqn->tiqn_tpg_lock); 345 spin_unlock(&tiqn->tiqn_tpg_lock);
345 346
346 return 0; 347 return 0;
348
349err:
350 spin_unlock(&tpg->tpg_state_lock);
351 return ret;
347} 352}
348 353
349int iscsit_tpg_disable_portal_group(struct iscsi_portal_group *tpg, int force) 354int iscsit_tpg_disable_portal_group(struct iscsi_portal_group *tpg, int force)
@@ -558,7 +563,7 @@ int iscsit_ta_authentication(struct iscsi_portal_group *tpg, u32 authentication)
558 if ((authentication != 1) && (authentication != 0)) { 563 if ((authentication != 1) && (authentication != 0)) {
559 pr_err("Illegal value for authentication parameter:" 564 pr_err("Illegal value for authentication parameter:"
560 " %u, ignoring request.\n", authentication); 565 " %u, ignoring request.\n", authentication);
561 return -1; 566 return -EINVAL;
562 } 567 }
563 568
564 memset(buf1, 0, sizeof(buf1)); 569 memset(buf1, 0, sizeof(buf1));