On Fri, Sep 04, 2020 at 06:11:22PM +1000, Herbert Xu wrote: > 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 <herbert@xxxxxxxxxxxxxxxxxxx> > > 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); > This patch is in my hash/rng serie, I will resend it today.