From: Tejun Heo Date: Wed, 17 Jan 2007 02:34:02 +0000 (+0900) Subject: libata: initialize qc->dma_dir to DMA_NONE X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=501e0c500217e38276d61445ee0839b3f2c66d05;p=GitHub%2FLineageOS%2Fandroid_kernel_motorola_exynos9610.git libata: initialize qc->dma_dir to DMA_NONE libata didn't used to init qc->dma_dir to any specific value on qc initialization and command translation path didn't set qc->dma_dir if the command doesn't need data transfer. This made non-data commands to have random qc->dma_dir. This usually doesn't cause problem because LLDs usually check qc->protocol first and look at qc->dma_dir iff the command needs data transfer but this doesn't hold for all LLDs. It might be worthwhile to rename qc->dma_dir to qc->data_dir as we use the field to tag data direction for both PIO and DMA protocols. This problem has been spotted by James Bottomley. Signed-off-by: Tejun Heo Cc: James Bottomley Signed-off-by: Jeff Garzik --- diff --git a/include/linux/libata.h b/include/linux/libata.h index ab2754830322..e53a13ba7f78 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h @@ -1143,6 +1143,7 @@ static inline void ata_tf_init(struct ata_device *dev, struct ata_taskfile *tf) static inline void ata_qc_reinit(struct ata_queued_cmd *qc) { + qc->dma_dir = DMA_NONE; qc->__sg = NULL; qc->flags = 0; qc->cursect = qc->cursg = qc->cursg_ofs = 0;