diff options
| author | Nicholas Bellinger <nab@linux-iscsi.org> | 2016-02-05 14:51:36 -0800 |
|---|---|---|
| committer | Luis Henriques <luis.henriques@canonical.com> | 2016-03-24 10:00:49 +0000 |
| commit | 9afdedacc71f6cabb6cec705554d419fc2ed1a52 (patch) | |
| tree | 6381c31cde63cfe8617217b4b6f67bdcab3ebe5d /include/linux/errqueue.h | |
| parent | 3d7f13dab19dc9788c72b67bdf0fcdd865cf8168 (diff) | |
target: Fix race with SCF_SEND_DELAYED_TAS handling
commit 310d3d314be7f0a84011ebdc4bdccbcae9755a87 upstream.
This patch fixes a race between setting of SCF_SEND_DELAYED_TAS
in transport_send_task_abort(), and check of the same bit in
transport_check_aborted_status().
It adds a __transport_check_aborted_status() version that is
used by target_execute_cmd() when se_cmd->t_state_lock is
held, and a transport_check_aborted_status() wrapper for
all other existing callers.
Also, it handles the case where the check happens before
transport_send_task_abort() gets called. For this, go
ahead and set SCF_SEND_DELAYED_TAS early when necessary,
and have transport_send_task_abort() send the abort.
Cc: Quinn Tran <quinn.tran@qlogic.com>
Cc: Himanshu Madhani <himanshu.madhani@qlogic.com>
Cc: Sagi Grimberg <sagig@mellanox.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Hannes Reinecke <hare@suse.de>
Cc: Andy Grover <agrover@redhat.com>
Cc: Mike Christie <mchristi@redhat.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
[ luis: backported to 3.16: based on Nicholas' backport to 3.14 ]
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
Diffstat (limited to 'include/linux/errqueue.h')
0 files changed, 0 insertions, 0 deletions
