FAILED: patch "[PATCH] scsi: core: set result when the command cannot be dispatched" failed to apply to 4.4-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 4.4-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From be549d49115422f846b6d96ee8fd7173a5f7ceb0 Mon Sep 17 00:00:00 2001
From: Jaesoo Lee <[email protected]>
Date: Tue, 9 Apr 2019 17:02:22 -0700
Subject: [PATCH] scsi: core: set result when the command cannot be dispatched
When SCSI blk-mq is enabled, there is a bug in handling errors in scsi_queue_rq. Specifically, the bug is not setting result field of scsi_request correctly when the dispatch of the command has been failed. Since the upper layer code including the sg_io ioctl expects to receive any error status from result field of scsi_request, the error is silently ignored and this could cause data corruptions for some applications.
drivers/scsi/scsi_lib.c +5 -1
@@ -1706,8 +1706,12 @@ static blk_status_t scsi_queue_rq(struct blk_mq_hw_ctx *hctx, ret =BLK_STS_DEV_RESOURCE ;break ;default : +if (unlikely (!scsi_device_online (sdev))) +scsi_req (req)->result =DID_NO_CONNECT <<16 ; +else +scsi_req (req)->result =DID_ERROR <<16 ;/* -* Make sure to release all allocated ressources when +* Make sure to release all allocated resources when * we hit an error, as we will never see this command * again. */