dmaengine: dw-edma: Fix readq_ch() return value truncation
authorSerge Semin <Sergey.Semin@baikalelectronics.ru>
Wed, 25 Jan 2023 15:19:00 +0000 (18:19 +0300)
committerBjorn Helgaas <bhelgaas@google.com>
Fri, 10 Feb 2023 23:15:23 +0000 (17:15 -0600)
Previously, readq_ch() did a 64-bit readq(), but truncated the result by
storing it in the u32 "value".  Change "value" to u64 to avoid the
truncation.

Note: the method is currently unused, so the bug hasn't caused any problem
so far.

Fixes: 04e0a39fc10f ("dmaengine: dw-edma: Add writeq() and readq() for 64 bits architectures")
Signed-off-by: Serge Semin <Sergey.Semin@baikalelectronics.ru>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
drivers/dma/dw-edma/dw-edma-v0-core.c

index 66f296daac5a651aaa64502ece37ec816bb28704..13f40560571b66b73bb472eef0004e3155446f79 100644 (file)
@@ -192,7 +192,7 @@ static inline void writeq_ch(struct dw_edma *dw, enum dw_edma_dir dir, u16 ch,
 static inline u64 readq_ch(struct dw_edma *dw, enum dw_edma_dir dir, u16 ch,
                           const void __iomem *addr)
 {
-       u32 value;
+       u64 value;
 
        if (dw->chip->mf == EDMA_MF_EDMA_LEGACY) {
                u32 viewport_sel;