fill_result_tf() grabs the taskfile flags from the originating qc which sas_ata_qc_fill_rtf() promptly overwrites. The presence of an ata_taskfile in the sata_device makes it tempting to just copy the full contents in sas_ata_qc_fill_rtf(). However, libata really only wants the fis contents and expects the other portions of the taskfile to not be touched by ->qc_fill_rtf. To that end store a fis buffer in the sata_device and use ata_tf_from_fis() like every other ->qc_fill_rtf() implementation. Cc: <stable@vger.kernel.org> Reported-by: Praveen Murali <pmurali@logicube.com> Tested-by: Praveen Murali <pmurali@logicube.com> Signed-off-by: Dan Williams <dan.j.williams@intel.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com> |
||
---|---|---|
.. | ||
Kconfig | ||
Makefile | ||
aic94xx.h | ||
aic94xx_dev.c | ||
aic94xx_dump.c | ||
aic94xx_dump.h | ||
aic94xx_hwi.c | ||
aic94xx_hwi.h | ||
aic94xx_init.c | ||
aic94xx_reg.c | ||
aic94xx_reg.h | ||
aic94xx_reg_def.h | ||
aic94xx_sas.h | ||
aic94xx_scb.c | ||
aic94xx_sds.c | ||
aic94xx_sds.h | ||
aic94xx_seq.c | ||
aic94xx_seq.h | ||
aic94xx_task.c | ||
aic94xx_tmf.c |