diff options
author | Nicholas Bellinger <nab@linux-iscsi.org> | 2016-05-18 05:19:10 (GMT) |
---|---|---|
committer | Nicholas Bellinger <nab@linux-iscsi.org> | 2016-07-20 07:58:38 (GMT) |
commit | dff0ca9ea7dc8be2181a62df4a722c32ce68ff4a (patch) | |
tree | 5a8fad3a30d78857da00f4be6952c4f16c95f35c /lib/fdt_rw.c | |
parent | ea263c7fada4af8ec7fe5fcfd6e7d7705a89351b (diff) | |
download | linux-dff0ca9ea7dc8be2181a62df4a722c32ce68ff4a.tar.xz |
target: Fix ordered task target_setup_cmd_from_cdb exception hang
If a command with a Simple task attribute is failed due to a Unit
Attention, then a subsequent command with an Ordered task attribute
will hang forever. The reason for this is that the Unit Attention
status is checked for in target_setup_cmd_from_cdb, before the call
to target_execute_cmd, which calls target_handle_task_attr, which
in turn increments dev->simple_cmds.
However, transport_generic_request_failure still calls
transport_complete_task_attr, which will decrement dev->simple_cmds.
In this case, simple_cmds is now -1. So when a command with the
Ordered task attribute is sent, target_handle_task_attr sees that
dev->simple_cmds is not 0, so it decides it can't execute the
command until all the (nonexistent) Simple commands have completed.
Reported-by: Michael Cyr <mikecyr@linux.vnet.ibm.com>
Tested-by: Michael Cyr <mikecyr@linux.vnet.ibm.com>
Reported-by: Bryant G. Ly <bryantly@linux.vnet.ibm.com>
Tested-by: Bryant G. Ly <bryantly@linux.vnet.ibm.com>
Cc: stable@vger.kernel.org # 4.4+
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Diffstat (limited to 'lib/fdt_rw.c')
0 files changed, 0 insertions, 0 deletions