Patch "crypto: sun8i-ce - handle endianness of t_common_ctl" has been added to the 5.9-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    crypto: sun8i-ce - handle endianness of t_common_ctl

to the 5.9-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     crypto-sun8i-ce-handle-endianness-of-t_common_ctl.patch
and it can be found in the queue-5.9 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 37ceee9e7b8ed9f2e9e1516422092279ef22026f
Author: Corentin Labbe <clabbe@xxxxxxxxxxxx>
Date:   Fri Sep 18 07:23:05 2020 +0000

    crypto: sun8i-ce - handle endianness of t_common_ctl
    
    [ Upstream commit 87f34260f5e09a4578132ad1c05aef2d707dd4bf ]
    
    t_common_ctl is LE32 so we need to convert its value before using it.
    This value is only used on H6 (ignored on other SoCs) and not handling
    the endianness cause failure on xRNG/hashes operations on H6 when running BE.
    
    Fixes: 06f751b61329 ("crypto: allwinner - Add sun8i-ce Crypto Engine")
    Signed-off-by: Corentin Labbe <clabbe@xxxxxxxxxxxx>
    Signed-off-by: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c b/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c
index 138759dc8190e..08ed1ca12baf9 100644
--- a/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c
+++ b/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c
@@ -120,7 +120,10 @@ 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;
+	/* Only H6 needs to write a part of t_common_ctl along with "1", but since it is ignored
+	 * on older SoCs, we have no reason to complicate things.
+	 */
+	v = 1 | ((le32_to_cpu(ce->chanlist[flow].tl->t_common_ctl) & 0x7F) << 8);
 	writel(v, ce->base + CE_TLR);
 	mutex_unlock(&ce->mlock);
 



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux