The field t_common_ctl is supposed to be little-endian and indeed
when it is filled in we've already done a cpu_to_le32 on it.
However, in sun8i_ce_run_task it is taken as CPU-endian which is
obviously wrong on BE.  This patch fixes it.

Fixes: 93c7f4d357de ("crypto: sun8i-ce - enable working on big...")
Signed-off-by: Herbert Xu <herb...@gondor.apana.org.au>

diff --git a/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c 
b/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c
index 138759dc8190..703a60d4e2f6 100644
--- a/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c
+++ b/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c
@@ -120,7 +120,7 @@ int sun8i_ce_run_task(struct sun8i_ce_dev *ce, int flow, 
const char *name)
        /* Be sure all data is written before enabling the task */
        wmb();
 
-       v = 1 | (ce->chanlist[flow].tl->t_common_ctl & 0x7F) << 8;
+       v = 1 | (le32_to_cpu(ce->chanlist[flow].tl->t_common_ctl) & 0x7F) << 8;
        writel(v, ce->base + CE_TLR);
        mutex_unlock(&ce->mlock);
 
-- 
Email: Herbert Xu <herb...@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

Reply via email to