diff options
Diffstat (limited to 'drivers/scsi/libata-core.c')
-rw-r--r-- | drivers/scsi/libata-core.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/scsi/libata-core.c b/drivers/scsi/libata-core.c index 19ae3fa1cfcb..51cb9ca5519c 100644 --- a/drivers/scsi/libata-core.c +++ b/drivers/scsi/libata-core.c | |||
@@ -955,7 +955,6 @@ void ata_qc_complete_internal(struct ata_queued_cmd *qc) | |||
955 | { | 955 | { |
956 | struct completion *waiting = qc->private_data; | 956 | struct completion *waiting = qc->private_data; |
957 | 957 | ||
958 | qc->ap->ops->tf_read(qc->ap, &qc->tf); | ||
959 | complete(waiting); | 958 | complete(waiting); |
960 | } | 959 | } |
961 | 960 | ||
@@ -997,6 +996,7 @@ unsigned ata_exec_internal(struct ata_port *ap, struct ata_device *dev, | |||
997 | qc->tf = *tf; | 996 | qc->tf = *tf; |
998 | if (cdb) | 997 | if (cdb) |
999 | memcpy(qc->cdb, cdb, ATAPI_CDB_LEN); | 998 | memcpy(qc->cdb, cdb, ATAPI_CDB_LEN); |
999 | qc->flags |= ATA_QCFLAG_RESULT_TF; | ||
1000 | qc->dma_dir = dma_dir; | 1000 | qc->dma_dir = dma_dir; |
1001 | if (dma_dir != DMA_NONE) { | 1001 | if (dma_dir != DMA_NONE) { |
1002 | ata_sg_init_one(qc, buf, buflen); | 1002 | ata_sg_init_one(qc, buf, buflen); |
@@ -1034,7 +1034,7 @@ unsigned ata_exec_internal(struct ata_port *ap, struct ata_device *dev, | |||
1034 | /* finish up */ | 1034 | /* finish up */ |
1035 | spin_lock_irqsave(&ap->host_set->lock, flags); | 1035 | spin_lock_irqsave(&ap->host_set->lock, flags); |
1036 | 1036 | ||
1037 | *tf = qc->tf; | 1037 | *tf = qc->result_tf; |
1038 | err_mask = qc->err_mask; | 1038 | err_mask = qc->err_mask; |
1039 | 1039 | ||
1040 | ata_qc_free(qc); | 1040 | ata_qc_free(qc); |