Browse Source

iscsi-target: fix memory leak in lio_target_tiqn_addtpg()

tpg must free when call core_tpg_register() return fail

Signed-off-by: tangwenji <tang.wenji@zte.com.cn>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
tangwenji 8 years ago
parent
commit
12d5a43b2d
1 changed files with 2 additions and 1 deletions
  1. 2 1
      drivers/target/iscsi/iscsi_target_configfs.c

+ 2 - 1
drivers/target/iscsi/iscsi_target_configfs.c

@@ -1123,7 +1123,7 @@ static struct se_portal_group *lio_target_tiqn_addtpg(
 
 
 	ret = core_tpg_register(wwn, &tpg->tpg_se_tpg, SCSI_PROTOCOL_ISCSI);
 	ret = core_tpg_register(wwn, &tpg->tpg_se_tpg, SCSI_PROTOCOL_ISCSI);
 	if (ret < 0)
 	if (ret < 0)
-		return NULL;
+		goto free_out;
 
 
 	ret = iscsit_tpg_add_portal_group(tiqn, tpg);
 	ret = iscsit_tpg_add_portal_group(tiqn, tpg);
 	if (ret != 0)
 	if (ret != 0)
@@ -1135,6 +1135,7 @@ static struct se_portal_group *lio_target_tiqn_addtpg(
 	return &tpg->tpg_se_tpg;
 	return &tpg->tpg_se_tpg;
 out:
 out:
 	core_tpg_deregister(&tpg->tpg_se_tpg);
 	core_tpg_deregister(&tpg->tpg_se_tpg);
+free_out:
 	kfree(tpg);
 	kfree(tpg);
 	return NULL;
 	return NULL;
 }
 }