iscsi-target: Fix iscsit_add_reject* usage for iser
This patch changes iscsit_add_reject() + iscsit_add_reject_from_cmd() usage to not sleep on iscsi_cmd->reject_comp to address a free-after-use usage bug in v3.10 with iser-target code. It saves ->reject_reason for use within iscsit_build_reject() so the correct value for both transport cases. It also drops the legacy fail_conn parameter usage throughput iscsi-target code and adds two iscsit_add_reject_cmd() and iscsit_reject_cmd helper functions, along with various small cleanups. (v2: Re-enable target_put_sess_cmd() to be called from iscsit_add_reject_from_cmd() for rejects invoked after target_get_sess_cmd() has been called) Cc: Or Gerlitz <ogerlitz@mellanox.com> Cc: Mike Christie <michaelc@cs.wisc.edu> Cc: stable@vger.kernel.org # 3.10+ Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Tento commit je obsažen v:
@@ -746,13 +746,12 @@ int iscsit_check_post_dataout(
|
||||
if (!conn->sess->sess_ops->ErrorRecoveryLevel) {
|
||||
pr_err("Unable to recover from DataOUT CRC"
|
||||
" failure while ERL=0, closing session.\n");
|
||||
iscsit_add_reject_from_cmd(ISCSI_REASON_DATA_DIGEST_ERROR,
|
||||
1, 0, buf, cmd);
|
||||
iscsit_reject_cmd(cmd, ISCSI_REASON_DATA_DIGEST_ERROR,
|
||||
buf);
|
||||
return DATAOUT_CANNOT_RECOVER;
|
||||
}
|
||||
|
||||
iscsit_add_reject_from_cmd(ISCSI_REASON_DATA_DIGEST_ERROR,
|
||||
0, 0, buf, cmd);
|
||||
iscsit_reject_cmd(cmd, ISCSI_REASON_DATA_DIGEST_ERROR, buf);
|
||||
return iscsit_dataout_post_crc_failed(cmd, buf);
|
||||
}
|
||||
}
|
||||
|
Odkázat v novém úkolu
Zablokovat Uživatele