[SCSI] fix oops on usb storage device disconnect
We fix the oops by enforcing the host state model. There have also been two extra states added: SHOST_CANCEL_RECOVERY and SHOST_DEL_RECOVERY so we can take the model through host removal while the recovery thread is active. Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
This commit is contained in:
committed by
James Bottomley
parent
a64358db12
commit
939647ee30
@ -1265,9 +1265,8 @@ int scsi_device_cancel(struct scsi_device *sdev, int recovery)
|
||||
list_for_each_safe(lh, lh_sf, &active_list) {
|
||||
scmd = list_entry(lh, struct scsi_cmnd, eh_entry);
|
||||
list_del_init(lh);
|
||||
if (recovery) {
|
||||
scsi_eh_scmd_add(scmd, SCSI_EH_CANCEL_CMD);
|
||||
} else {
|
||||
if (recovery &&
|
||||
!scsi_eh_scmd_add(scmd, SCSI_EH_CANCEL_CMD)) {
|
||||
scmd->result = (DID_ABORT << 16);
|
||||
scsi_finish_command(scmd);
|
||||
}
|
||||
|
Reference in New Issue
Block a user