diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index ddb3909d7288bcb4f5074c3433a931371aa7ef38..e07142b4bb54ed2fad8b1e7a993ecbcf839d05c8 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -4717,8 +4717,8 @@ static void fill_result_tf(struct ata_queued_cmd *qc)
 {
 	struct ata_port *ap = qc->ap;
 
-	ap->ops->tf_read(ap, &qc->result_tf);
 	qc->result_tf.flags = qc->tf.flags;
+	ap->ops->tf_read(ap, &qc->result_tf);
 }
 
 /**