From b69c1fcf0a7cb2b7dff12ce4e8506b395431a52c Mon Sep 17 00:00:00 2001 From: Nicholas Bellinger Date: Tue, 6 Nov 2012 15:43:53 -0800 Subject: [PATCH] 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 Cc: Roland Dreier Signed-off-by: Nicholas Bellinger --- drivers/target/target_core_transport.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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);