android_kernel_samsung_msm8976/Documentation/scsi
Wei Fang 52f5551873 scsi: fix race between simultaneous decrements of ->host_failed
commit 72d8c36ec364c82bf1bf0c64dfa1041cfaf139f7 upstream.

sas_ata_strategy_handler() adds the works of the ata error handler to
system_unbound_wq. This workqueue asynchronously runs work items, so the
ata error handler will be performed concurrently on different CPUs. In
this case, ->host_failed will be decreased simultaneously in
scsi_eh_finish_cmd() on different CPUs, and become abnormal.

It will lead to permanently inequality between ->host_failed and
->host_busy, and scsi error handler thread won't start running. IO
errors after that won't be handled.

Since all scmds must have been handled in the strategy handler, just
remove the decrement in scsi_eh_finish_cmd() and zero ->host_busy after
the strategy handler to fix this race.

Fixes: 50824d6c56 ("[SCSI] libsas: async ata-eh")
Cc: stable@vger.kernel.org
Signed-off-by: Wei Fang <fangwei1@huawei.com>
Reviewed-by: James Bottomley <jejb@linux.vnet.ibm.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Willy Tarreau <w@1wt.eu>
2019-07-27 21:41:57 +02:00
..
00-INDEX
53c700.txt
BusLogic.txt
ChangeLog.1992-1997
ChangeLog.arcmsr
ChangeLog.ips
ChangeLog.lpfc
ChangeLog.megaraid
ChangeLog.megaraid_sas
ChangeLog.ncr53c8xx
ChangeLog.sym53c8xx
ChangeLog.sym53c8xx_2
FlashPoint.txt
LICENSE.FlashPoint
LICENSE.qla2xxx
LICENSE.qla4xxx
Mylex.txt
NinjaSCSI.txt
aacraid.txt
advansys.txt
aha152x.txt
aic7xxx.txt
aic7xxx_old.txt
aic79xx.txt
arcmsr_spec.txt
bfa.txt
bnx2fc.txt
cxgb3i.txt
dc395x.txt
dpti.txt
dtc3x80.txt
g_NCR5380.txt
hpsa.txt
hptiop.txt
in2000.txt
libsas.txt
link_power_management_policy.txt
lpfc.txt
megaraid.txt
ncr53c8xx.txt
osd.txt
osst.txt
ppa.txt
qlogicfas.txt
scsi-changer.txt
scsi-generic.txt
scsi-parameters.txt
scsi.txt
scsi_eh.txt
scsi_fc_transport.txt
scsi_mid_low_api.txt
st.txt
sym53c8xx_2.txt
sym53c500_cs.txt
tmscsim.txt
ufs.txt