aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/target
diff options
context:
space:
mode:
authorNicholas Bellinger <nab@linux-iscsi.org>2012-11-06 15:43:53 -0800
committerNicholas Bellinger <nab@linux-iscsi.org>2012-11-07 20:10:56 -0800
commitb69c1fcf0a7cb2b7dff12ce4e8506b395431a52c (patch)
tree9bd450b152ed11dee3d617a5345da78c543f23dc /drivers/target
parenttarget: Fix incorrect inversion of TPGS_EXPLICT_ALUA check (diff)
downloadlinux-dev-b69c1fcf0a7cb2b7dff12ce4e8506b395431a52c.tar.xz
linux-dev-b69c1fcf0a7cb2b7dff12ce4e8506b395431a52c.zip
target: Fix possible TFO->write_pending() sense_reason_t silent WRITE corruption
This patch fixes a possible case in transport_generic_new_cmd() where a failure from TFO->write_pending() from a fabric module return something other than -EAGAIN or -ENOMEM would cause a failed WRITE to silently succeed. Go ahead and return TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE for this special case instead of only just making noise with WARN_ON(). (v2: Fix incorrect exception return for all cases) Cc: Christoph Hellwig <hch@lst.de> Cc: Roland Dreier <roland@purestorage.com> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Diffstat (limited to 'drivers/target')
-rw-r--r--drivers/target/target_core_transport.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c
index 98044bf1da08..63d7848bf96c 100644
--- a/drivers/target/target_core_transport.c
+++ b/drivers/target/target_core_transport.c
@@ -2127,7 +2127,7 @@ transport_generic_new_cmd(struct se_cmd *cmd)
/* fabric drivers should only return -EAGAIN or -ENOMEM as error */
WARN_ON(ret);
- return 0;
+ return (!ret) ? 0 : TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE;
queue_full:
pr_debug("Handling write_pending QUEUE__FULL: se_cmd: %p\n", cmd);