lkml.org 
[lkml]   [2019]   [Apr]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 33/70] scsi: core: set result when the command cannot be dispatched
    Date
    From: Jaesoo Lee <jalee@purestorage.com>

    commit be549d49115422f846b6d96ee8fd7173a5f7ceb0 upstream.

    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.

    Fixes: d285203cf647 ("scsi: add support for a blk-mq based I/O path.")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Jaesoo Lee <jalee@purestorage.com>
    Reviewed-by: Hannes Reinecke <hare@suse.com>
    Reviewed-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/scsi/scsi_lib.c | 6 +++++-
    1 file changed, 5 insertions(+), 1 deletion(-)

    --- a/drivers/scsi/scsi_lib.c
    +++ b/drivers/scsi/scsi_lib.c
    @@ -2050,8 +2050,12 @@ out:
    blk_mq_delay_run_hw_queue(hctx, SCSI_QUEUE_DELAY);
    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.
    */

    \
     
     \ /
      Last update: 2019-04-24 19:53    [W:7.775 / U:0.100 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site