Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0957627a authored by Nicholas Bellinger's avatar Nicholas Bellinger
Browse files

iscsi-target: Fix sess allocation leak in iscsi_login_zero_tsih_s1



This patch adds missing kfree() for an allocation in iscsi_login_zero_tsih_s1()
code, and make transport_init_session() check for IS_ERR() returns.

Reported-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
parent 03e98c9e
Loading
Loading
Loading
Loading
+8 −5
Original line number Diff line number Diff line
@@ -224,7 +224,7 @@ static int iscsi_login_zero_tsih_s1(
		iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR,
				ISCSI_LOGIN_STATUS_NO_RESOURCES);
		pr_err("Could not allocate memory for session\n");
		return -1;
		return -ENOMEM;
	}

	iscsi_login_set_conn_values(sess, conn, pdu->cid);
@@ -250,7 +250,8 @@ static int iscsi_login_zero_tsih_s1(
		pr_err("idr_pre_get() for sess_idr failed\n");
		iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR,
				ISCSI_LOGIN_STATUS_NO_RESOURCES);
		return -1;
		kfree(sess);
		return -ENOMEM;
	}
	spin_lock(&sess_idr_lock);
	idr_get_new(&sess_idr, NULL, &sess->session_index);
@@ -270,14 +271,16 @@ static int iscsi_login_zero_tsih_s1(
				ISCSI_LOGIN_STATUS_NO_RESOURCES);
		pr_err("Unable to allocate memory for"
				" struct iscsi_sess_ops.\n");
		return -1;
		kfree(sess);
		return -ENOMEM;
	}

	sess->se_sess = transport_init_session();
	if (!sess->se_sess) {
	if (IS_ERR(sess->se_sess)) {
		iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR,
				ISCSI_LOGIN_STATUS_NO_RESOURCES);
		return -1;
		kfree(sess);
		return -ENOMEM;
	}

	return 0;