Patch "target: Fix compare_and_write_callback handling for non GOOD status" has been added to the 4.9-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
target: Fix compare_and_write_callback handling for non GOOD status
to the 4.9-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
target-fix-compare_and_write_callback-handling-for-non-good-status.patch
and it can be found in the queue-4.9 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
a71a5dc7f833943998e97ca8fa6a4c708a0ed1a9Mon Sep 17 00:00:00 2001
From: Nicholas Bellinger <[email protected]>
Date: Tue, 11 Apr 2017 16:24:16 -0700
Subject: target: Fix compare_and_write_callback handling for non GOOD status
From: Nicholas Bellinger <[email protected]>
commit a71a5dc7f833943998e97ca8fa6a4c708a0ed1a9 upstream.
Following the bugfix for handling non SAM_STAT_GOOD COMPARE_AND_WRITE status during COMMIT phase in commit 9b2792c3da1, the same bug exists for the READ phase as well.
This would manifest first as a lost SCSI response, and eventual hung task during fabric driver logout or re-login, as existing shutdown logic waited for the COMPARE_AND_WRITE se_cmd->cmd_kref to reach zero.
To address this bug, compare_and_write_callback() has been changed to set post_ret = 1 and return TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE as necessary to signal failure status.
--- drivers/target/target_core_sbc.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
drivers/target/target_core_sbc.c +4 -1
@@ -506,8 +506,11 @@ static sense_reason_t compare_and_write_* been failed with a non-zero SCSI status. */ if (cmd->scsi_status) { -pr_err ("compare_and_write_callback: non zero scsi_status:" +pr_debug ("compare_and_write_callback: non zero scsi_status:" " 0x%02x\n" , cmd->scsi_status); + *post_ret =1 ; +if (cmd->scsi_status ==SAM_STAT_CHECK_CONDITION ) + ret =TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE ; goto out; }
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/target-fix-compare_and_write_callback-handling-for-non-good-status.patch queue-4.9/target-fileio-fix-zero-length-read-and-write-handling.patch queue-4.9/iscsi-target-set-session_fall_back_to_erl0-when-forcing-reinstatement.patch