crypto: marvell - Fix wrong type check in dma functions
authorRomain Perier <romain.perier@free-electrons.com>
Tue, 21 Jun 2016 08:08:33 +0000 (10:08 +0200)
committerHerbert Xu <herbert@gondor.apana.org.au>
Thu, 23 Jun 2016 10:14:01 +0000 (18:14 +0800)
So far, the way that the type of a TDMA operation was checked was wrong.
We have to use the type mask in order to get the right part of the flag
containing the type of the operation.

Signed-off-by: Romain Perier <romain.perier@free-electrons.com>
Acked-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/marvell/tdma.c

index e416a74..4d23bf9 100644 (file)
@@ -64,8 +64,9 @@ void mv_cesa_dma_cleanup(struct mv_cesa_tdma_req *dreq)
 
        for (tdma = dreq->chain.first; tdma;) {
                struct mv_cesa_tdma_desc *old_tdma = tdma;
+               u32 type = tdma->flags & CESA_TDMA_TYPE_MSK;
 
-               if (tdma->flags & CESA_TDMA_OP)
+               if (type == CESA_TDMA_OP)
                        dma_pool_free(cesa_dev->dma->op_pool, tdma->op,
                                      le32_to_cpu(tdma->src));
 
@@ -90,7 +91,7 @@ void mv_cesa_dma_prepare(struct mv_cesa_tdma_req *dreq,
                if (tdma->flags & CESA_TDMA_SRC_IN_SRAM)
                        tdma->src = cpu_to_le32(tdma->src + engine->sram_dma);
 
-               if (tdma->flags & CESA_TDMA_OP)
+               if ((tdma->flags & CESA_TDMA_TYPE_MSK) == CESA_TDMA_OP)
                        mv_cesa_adjust_op(engine, tdma->op);
        }
 }