target/transport: Always initialize bidi fields in se_cmd
Fields t_bidi_data_sg and t_bidi_data_nents are set only in the presence of BIDI commands. This means that the underlying code (for example TCMU) cannot inspect them when the SCSI command is not a BIDI one. Ensure the code always initializes these fields with the given values, even when the SCSI command is not a BIDI one. Set t_bidi_data_sg to sgl_bidi (which should be NULL for non-BIDI commands) and t_bidi_data_nents to sgl_bidi_count (which should be 0 for non-BIDI commands). This allows the underlying code to use these fields unconditionally. Signed-off-by: Ilias Tsitsimpis <iliastsi@arrikto.com> Signed-off-by: Vangelis Koukis <vkoukis@arrikto.com> Reviewed-by: Andy Grover <agrover@redhat.com> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
This commit is contained in:
parent
9736f4ad7c
commit
b32bd0a8ee
|
@ -1353,11 +1353,9 @@ transport_generic_map_mem_to_cmd(struct se_cmd *cmd, struct scatterlist *sgl,
|
|||
|
||||
cmd->t_data_sg = sgl;
|
||||
cmd->t_data_nents = sgl_count;
|
||||
cmd->t_bidi_data_sg = sgl_bidi;
|
||||
cmd->t_bidi_data_nents = sgl_bidi_count;
|
||||
|
||||
if (sgl_bidi && sgl_bidi_count) {
|
||||
cmd->t_bidi_data_sg = sgl_bidi;
|
||||
cmd->t_bidi_data_nents = sgl_bidi_count;
|
||||
}
|
||||
cmd->se_cmd_flags |= SCF_PASSTHROUGH_SG_TO_MEM_NOALLOC;
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue