X-Git-Url: https://git.kernelconcepts.de/?a=blobdiff_plain;f=drivers%2Fscsi%2Fscsi_error.c;h=ac3196420435ef25e974c34328ce0ddc2764d795;hb=0db6ca8a5e1ea585795db3643ec7d50fc8cb1aff;hp=ecc07dab893dc473c831227e567cddbbb04e1852;hpb=6df62e7916befd2c04ac63180b4ddeae2f7639f2;p=karo-tx-linux.git diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c index ecc07dab893d..ac3196420435 100644 --- a/drivers/scsi/scsi_error.c +++ b/drivers/scsi/scsi_error.c @@ -1628,11 +1628,17 @@ static void scsi_eh_offline_sdevs(struct list_head *work_q, struct list_head *done_q) { struct scsi_cmnd *scmd, *next; + struct scsi_device *sdev; list_for_each_entry_safe(scmd, next, work_q, eh_entry) { sdev_printk(KERN_INFO, scmd->device, "Device offlined - " "not ready after error recovery\n"); - scsi_device_set_state(scmd->device, SDEV_OFFLINE); + sdev = scmd->device; + + mutex_lock(&sdev->state_mutex); + scsi_device_set_state(sdev, SDEV_OFFLINE); + mutex_unlock(&sdev->state_mutex); + scsi_eh_finish_cmd(scmd, done_q); } return;