target: Check idr_get_new return value in iscsi_login_zero_tsih_s1
This patch updates iscsi_login_zero_tsih_s1() usage for generating iscsi_session->session_index to properly check the return value from idr_get_new(), and reject the iSCSI login attempt with exception status ISCSI_LOGIN_STATUS_NO_RESOURCES in the event of a failure. Signed-off-by: Benjamin Wang <cpwang2009@gmail.com> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
This commit is contained in:
parent
4c054ba63a
commit
13b5533a38
|
@ -221,6 +221,7 @@ static int iscsi_login_zero_tsih_s1(
|
|||
{
|
||||
struct iscsi_session *sess = NULL;
|
||||
struct iscsi_login_req *pdu = (struct iscsi_login_req *)buf;
|
||||
int ret;
|
||||
|
||||
sess = kzalloc(sizeof(struct iscsi_session), GFP_KERNEL);
|
||||
if (!sess) {
|
||||
|
@ -257,9 +258,17 @@ static int iscsi_login_zero_tsih_s1(
|
|||
return -ENOMEM;
|
||||
}
|
||||
spin_lock(&sess_idr_lock);
|
||||
idr_get_new(&sess_idr, NULL, &sess->session_index);
|
||||
ret = idr_get_new(&sess_idr, NULL, &sess->session_index);
|
||||
spin_unlock(&sess_idr_lock);
|
||||
|
||||
if (ret < 0) {
|
||||
pr_err("idr_get_new() for sess_idr failed\n");
|
||||
iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR,
|
||||
ISCSI_LOGIN_STATUS_NO_RESOURCES);
|
||||
kfree(sess);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
sess->creation_time = get_jiffies_64();
|
||||
spin_lock_init(&sess->session_stats_lock);
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue
Block a user