iscsi-target: Fix iscsit_allocate_se_cmd_for_tmr failure path bugs
This patch fixes two bugs in allocation failure handling in iscsit_allocate_se_cmd_for_tmr(): This first reported by DanC is a free-after call to transport_free_se_cmd(), this patch drops the transport_free_se_cmd() call all together, as iscsit_release_cmd() will release existing allocations as expected. The second is a bug where iscsi_cmd_t was being leaked on a cmd->tmr_req allocation failure, so make this jump to iscsit_release_cmd() as well. Signed-off-by: Dan Carpenter <error27@gmail.com> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
This commit is contained in:
parent
6626a05726
commit
ba77366963
@ -243,7 +243,7 @@ struct iscsi_cmd *iscsit_allocate_se_cmd_for_tmr(
|
|||||||
if (!cmd->tmr_req) {
|
if (!cmd->tmr_req) {
|
||||||
pr_err("Unable to allocate memory for"
|
pr_err("Unable to allocate memory for"
|
||||||
" Task Management command!\n");
|
" Task Management command!\n");
|
||||||
return NULL;
|
goto out;
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* TASK_REASSIGN for ERL=2 / connection stays inside of
|
* TASK_REASSIGN for ERL=2 / connection stays inside of
|
||||||
@ -298,8 +298,6 @@ struct iscsi_cmd *iscsit_allocate_se_cmd_for_tmr(
|
|||||||
return cmd;
|
return cmd;
|
||||||
out:
|
out:
|
||||||
iscsit_release_cmd(cmd);
|
iscsit_release_cmd(cmd);
|
||||||
if (se_cmd)
|
|
||||||
transport_free_se_cmd(se_cmd);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user