aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/scsi/libata-core.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/scsi/libata-core.c b/drivers/scsi/libata-core.c
index 11ed6fa27096..0a959566f964 100644
--- a/drivers/scsi/libata-core.c
+++ b/drivers/scsi/libata-core.c
@@ -2802,10 +2802,14 @@ void ata_poll_qc_complete(struct ata_queued_cmd *qc, unsigned int err_mask)
2802 2802
2803static unsigned long ata_pio_poll(struct ata_port *ap) 2803static unsigned long ata_pio_poll(struct ata_port *ap)
2804{ 2804{
2805 struct ata_queued_cmd *qc;
2805 u8 status; 2806 u8 status;
2806 unsigned int poll_state = HSM_ST_UNKNOWN; 2807 unsigned int poll_state = HSM_ST_UNKNOWN;
2807 unsigned int reg_state = HSM_ST_UNKNOWN; 2808 unsigned int reg_state = HSM_ST_UNKNOWN;
2808 2809
2810 qc = ata_qc_from_tag(ap, ap->active_tag);
2811 assert(qc != NULL);
2812
2809 switch (ap->hsm_task_state) { 2813 switch (ap->hsm_task_state) {
2810 case HSM_ST: 2814 case HSM_ST:
2811 case HSM_ST_POLL: 2815 case HSM_ST_POLL:
@@ -2870,15 +2874,15 @@ static int ata_pio_complete (struct ata_port *ap)
2870 } 2874 }
2871 } 2875 }
2872 2876
2877 qc = ata_qc_from_tag(ap, ap->active_tag);
2878 assert(qc != NULL);
2879
2873 drv_stat = ata_wait_idle(ap); 2880 drv_stat = ata_wait_idle(ap);
2874 if (!ata_ok(drv_stat)) { 2881 if (!ata_ok(drv_stat)) {
2875 ap->hsm_task_state = HSM_ST_ERR; 2882 ap->hsm_task_state = HSM_ST_ERR;
2876 return 0; 2883 return 0;
2877 } 2884 }
2878 2885
2879 qc = ata_qc_from_tag(ap, ap->active_tag);
2880 assert(qc != NULL);
2881
2882 ap->hsm_task_state = HSM_ST_IDLE; 2886 ap->hsm_task_state = HSM_ST_IDLE;
2883 2887
2884 ata_poll_qc_complete(qc, 0); 2888 ata_poll_qc_complete(qc, 0);