crypto: talitos – Align SEC1 accesses to 32 bits boundaries. [Linux 4.9.187]

This Linux kernel change "crypto: talitos – Align SEC1 accesses to 32 bits boundaries" is included in the Linux 4.9.187 release. This change is authored by Christophe Leroy <christophe.leroy [at] c-s.fr> on Tue May 21 13:34:18 2019 +0000. The commit for this change in Linux stable tree is b24e816 (patch) which is from upstream commit c9cca70. The same Linux upstream change may have been applied to various maintained Linux releases and you can find all Linux releases containing changes from upstream c9cca70.

crypto: talitos - Align SEC1 accesses to 32 bits boundaries.

[ Upstream commit c9cca7034b34a2d82e9a03b757de2485c294851c ]

The MPC885 reference manual states:

SEC Lite-initiated 8xx writes can occur only on 32-bit-word boundaries, but
reads can occur on any byte boundary. Writing back a header read from a
non-32-bit-word boundary will yield unpredictable results.

In order to ensure that, cra_alignmask is set to 3 for SEC1.

Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
Fixes: 9c4a79653b35 ("crypto: talitos - Freescale integrated security engine (SEC) driver")
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>

There are 5 lines of Linux source code added/deleted in this change. Code changes to Linux kernel are as follows.

 drivers/crypto/talitos.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/crypto/talitos.c b/drivers/crypto/talitos.c
index e7864aa49..ea8595d 100644
--- a/drivers/crypto/talitos.c
+++ b/drivers/crypto/talitos.c
@@ -3119,7 +3119,10 @@ static struct talitos_crypto_alg *talitos_alg_alloc(struct device *dev,
        alg->cra_priority = t_alg->algt.priority;
    else
        alg->cra_priority = TALITOS_CRA_PRIORITY;
-   alg->cra_alignmask = 0;
+   if (has_ftr_sec1(priv))
+       alg->cra_alignmask = 3;
+   else
+       alg->cra_alignmask = 0;
    alg->cra_ctxsize = sizeof(struct talitos_ctx);
    alg->cra_flags |= CRYPTO_ALG_KERN_DRIVER_ONLY;

Leave a Reply

Your email address will not be published. Required fields are marked *