crypto: talitos - Endianess in current_desc_hdr()
authorChristophe Leroy <christophe.leroy@csgroup.eu>
Thu, 8 Oct 2020 09:34:55 +0000 (09:34 +0000)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 30 Oct 2020 06:34:45 +0000 (17:34 +1100)
current_desc_hdr() compares the value of the current descriptor
with the next_desc member of the talitos_desc struct.

While the current descriptor is obtained from in_be32() which
return CPU ordered bytes, next_desc member is in big endian order.

Convert the current descriptor into big endian before comparing it
with next_desc.

This fixes a sparse warning.

Fixes: 37b5e8897eb5 ("crypto: talitos - chain in buffered data for ahash on SEC1")
Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/talitos.c

index 6677389..1de6b01 100644 (file)
@@ -478,7 +478,7 @@ static u32 current_desc_hdr(struct device *dev, int ch)
 
        iter = tail;
        while (priv->chan[ch].fifo[iter].dma_desc != cur_desc &&
-              priv->chan[ch].fifo[iter].desc->next_desc != cur_desc) {
+              priv->chan[ch].fifo[iter].desc->next_desc != cpu_to_be32(cur_desc)) {
                iter = (iter + 1) & (priv->fifo_len - 1);
                if (iter == tail) {
                        dev_err(dev, "couldn't locate current descriptor\n");
@@ -486,7 +486,7 @@ static u32 current_desc_hdr(struct device *dev, int ch)
                }
        }
 
-       if (priv->chan[ch].fifo[iter].desc->next_desc == cur_desc) {
+       if (priv->chan[ch].fifo[iter].desc->next_desc == cpu_to_be32(cur_desc)) {
                struct talitos_edesc *edesc;
 
                edesc = container_of(priv->chan[ch].fifo[iter].desc,