aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/libsas
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/libsas')
-rw-r--r--drivers/scsi/libsas/sas_ata.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/scsi/libsas/sas_ata.c b/drivers/scsi/libsas/sas_ata.c
index 16c5094bc86c..3356bf36cd98 100644
--- a/drivers/scsi/libsas/sas_ata.c
+++ b/drivers/scsi/libsas/sas_ata.c
@@ -802,6 +802,19 @@ int sas_ata_eh(struct Scsi_Host *shost, struct list_head *work_q,
802 if (!list_empty(&sata_q)) { 802 if (!list_empty(&sata_q)) {
803 ata_port_printk(ap, KERN_DEBUG, "sas eh calling libata cmd error handler\n"); 803 ata_port_printk(ap, KERN_DEBUG, "sas eh calling libata cmd error handler\n");
804 ata_scsi_cmd_error_handler(shost, ap, &sata_q); 804 ata_scsi_cmd_error_handler(shost, ap, &sata_q);
805 /*
806 * ata's error handler may leave the cmd on the list
807 * so make sure they don't remain on a stack list
808 * about to go out of scope.
809 *
810 * This looks strange, since the commands are
811 * now part of no list, but the next error
812 * action will be ata_port_error_handler()
813 * which takes no list and sweeps them up
814 * anyway from the ata tag array.
815 */
816 while (!list_empty(&sata_q))
817 list_del_init(sata_q.next);
805 } 818 }
806 } while (ap); 819 } while (ap);
807 820