Commit e63af958 authored by Nicholas Bellinger's avatar Nicholas Bellinger Committed by James Bottomley

[SCSI] target: Fix SCF_SCSI_CONTROL_SG_IO_CDB breakage

This patch fixes a bug introduced during the v4 control CDB emulation
refactoring that broke SCF_SCSI_CONTROL_SG_IO_CDB operation within
transport_map_control_cmd_to_task().  It moves the BUG_ON() into
transport_do_se_mem_map() after the TRANSPORT(dev)->do_se_mem_map()
RAMDISK_DR special case, and adds the proper struct se_mem assignment
when !list_empty() for normal non RAMDISK_DR backend device cases.
Reported-by: default avatarKai-Thorsten Hambrecht <kai@hambrecht.org>
Signed-off-by: default avatarNicholas A. Bellinger <nab@linux-iscsi.org>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
parent 7c2bf6e9
...@@ -4827,6 +4827,8 @@ static int transport_do_se_mem_map( ...@@ -4827,6 +4827,8 @@ static int transport_do_se_mem_map(
return ret; return ret;
} }
BUG_ON(list_empty(se_mem_list));
/* /*
* This is the normal path for all normal non BIDI and BIDI-COMMAND * This is the normal path for all normal non BIDI and BIDI-COMMAND
* WRITE payloads.. If we need to do BIDI READ passthrough for * WRITE payloads.. If we need to do BIDI READ passthrough for
...@@ -5008,7 +5010,9 @@ transport_map_control_cmd_to_task(struct se_cmd *cmd) ...@@ -5008,7 +5010,9 @@ transport_map_control_cmd_to_task(struct se_cmd *cmd)
struct se_mem *se_mem = NULL, *se_mem_lout = NULL; struct se_mem *se_mem = NULL, *se_mem_lout = NULL;
u32 se_mem_cnt = 0, task_offset = 0; u32 se_mem_cnt = 0, task_offset = 0;
BUG_ON(list_empty(cmd->t_task->t_mem_list)); if (!list_empty(T_TASK(cmd)->t_mem_list))
se_mem = list_entry(T_TASK(cmd)->t_mem_list->next,
struct se_mem, se_list);
ret = transport_do_se_mem_map(dev, task, ret = transport_do_se_mem_map(dev, task,
cmd->t_task->t_mem_list, NULL, se_mem, cmd->t_task->t_mem_list, NULL, se_mem,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment