Damien Le Moal
2a675e73df
scsi: core: save/restore command resid for error handling
...
commit 8f8fed0cdbbd6cdbf28d9ebe662f45765d2f7d39 upstream.
When a non-passthrough command is terminated with CHECK CONDITION, request
sense is executed by hijacking the command descriptor. Since
scsi_eh_prep_cmnd() and scsi_eh_restore_cmnd() do not save/restore the
original command resid, the value returned on failure of the original
command is lost and replaced with the value set by the execution of the
request sense command. This value may in many instances be unaligned to the
device sector size, causing sd_done() to print a warning message about the
incorrect unaligned resid before the command is retried.
Fix this problem by saving the original command residual in struct
scsi_eh_save using scsi_eh_prep_cmnd() and restoring it in
scsi_eh_restore_cmnd(). In addition, to make sure that the request sense
command is executed with a correctly initialized command structure, also
reset the residual to 0 in scsi_eh_prep_cmnd() after saving the original
command value in struct scsi_eh_save.
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20191001074839.1994-1-damien.lemoal@wdc.com
Signed-off-by: Damien Le Moal <damien.lemoal@wdc.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>
2019-10-29 09:19:49 +01:00
..
fc
uapi: export all headers under uapi directories
2017-05-11 00:21:54 +09:00
fc_encode.h
[SCSI] libfc: Add support for FDMI
2012-02-19 08:08:58 -06:00
fc_frame.h
[SCSI] fcoe: remove unused ptype field in fcoe_rcv_info
2011-07-28 12:08:55 +04:00
fcoe_sysfs.h
libfcoe, fcoe, bnx2fc: Add new fcoe control interface
2012-12-14 10:38:54 -08:00
iscsi_if.h
scsi_transport_iscsi: Add 25G and 40G speed definition
2016-02-23 21:27:02 -05:00
iscsi_proto.h
linux: drop __bitwise__ everywhere
2016-12-16 00:13:41 +02:00
iser.h
IB/iser,isert: Create and use new shared header
2015-12-24 00:17:35 -05:00
libfc.h
scsi: libfc: convert fc_fcp_pkt.ref_cnt from atomic_t to refcount_t
2017-03-15 18:44:02 -04:00
libfcoe.h
scsi: fcoe: Embed fc_rport_priv in fcoe_rport structure
2019-08-09 17:52:27 +02:00
libiscsi.h
SCSI misc on 20170503
2017-05-04 12:19:44 -07:00
libiscsi_tcp.h
iscsi_tcp: Use ahash
2016-01-27 20:36:10 +08:00
libsas.h
scsi: libsas: dynamically allocate and free ata host
2018-06-19 22:02:25 -04:00
osd_attributes.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
osd_initiator.h
scsi/osd: remove the gfp argument to osd_start_request
2018-05-14 08:55:09 -06:00
osd_ore.h
Boaz Harrosh - Fix broken email address
2014-10-19 20:22:32 +03:00
osd_protocol.h
Boaz Harrosh - Fix broken email address
2014-10-19 20:22:32 +03:00
osd_sec.h
Boaz Harrosh - Fix broken email address
2014-10-19 20:22:32 +03:00
osd_sense.h
Boaz Harrosh - Fix broken email address
2014-10-19 20:22:32 +03:00
osd_types.h
Boaz Harrosh - Fix broken email address
2014-10-19 20:22:32 +03:00
sas.h
scsi: Centralise ssp frame information units
2015-11-25 22:12:50 -05:00
sas_ata.h
[SCSI] sas: unify the pointlessly separated enums sas_dev_type and sas_device_type
2013-05-10 07:47:52 -07:00
scsi.h
scsi: core: Make SCSI Status CONDITION MET equivalent to GOOD
2018-03-12 21:55:24 -04:00
scsi_bsg_iscsi.h
[SCSI] iscsi class: add bsg support to iscsi class
2011-08-27 08:36:21 -06:00
scsi_cmnd.h
scsi: Check sense buffer size at build time
2018-08-02 15:23:51 -06:00
scsi_common.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
scsi_dbg.h
scsi: core: Reduce memory required for SCSI logging
2019-10-07 18:57:04 +02:00
scsi_device.h
scsi: Check sense buffer size at build time
2018-08-02 15:23:51 -06:00
scsi_devinfo.h
scsi: devinfo: BLIST_RETRY_ASC_C1 for Fujitsu ETERNUS
2018-04-20 19:14:36 -04:00
scsi_dh.h
scsi_dh: add 'rescan' callback
2016-02-23 21:27:02 -05:00
scsi_driver.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
scsi_eh.h
scsi: core: save/restore command resid for error handling
2019-10-29 09:19:49 +01:00
scsi_host.h
scsi: read host_busy via scsi_host_busy()
2018-06-26 12:53:26 -04:00
scsi_ioctl.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
scsi_proto.h
scsi: core: Add VENDOR_SPECIFIC sense code definitions
2018-01-22 20:04:02 -05:00
scsi_request.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
scsi_tcq.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
scsi_transport.h
SCSI misc on 20170220
2017-02-21 11:51:42 -08:00
scsi_transport_fc.h
scsi: scsi_transport_fc: fix typos on 64/128 GBit define names
2018-01-03 22:51:02 -05:00
scsi_transport_iscsi.h
scsi: libiscsi: Remove iscsi_destroy_session
2017-10-02 22:23:21 -04:00
scsi_transport_sas.h
scsi: libsas: direct call probe and destruct
2018-01-10 23:24:02 -05:00
scsi_transport_spi.h
scsi: remove abuses of scsi_populate_tag
2014-11-12 11:19:41 +01:00
scsi_transport_srp.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
scsicam.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
sg.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
srp.h
IB/srp: Add RDMA/CM support
2018-01-23 11:35:04 -05:00
viosrp.h
ibmvscsis: Initial commit of IBM VSCSI Tgt Driver
2016-07-20 01:15:43 -07:00