aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/mediatek/patches-5.10/401-crypto-fix-eip97-cache-incoherent.patch
blob: be2bffb749d612d4de2e8b544e405cb756fd7382 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
--- a/drivers/crypto/inside-secure/safexcel.h
+++ b/drivers/crypto/inside-secure/safexcel.h
@@ -736,6 +736,9 @@ enum safexcel_eip_version {
 /* Priority we use for advertising our algorithms */
 #define SAFEXCEL_CRA_PRIORITY		300
 
+/* System cache line size */
+#define SYSTEM_CACHELINE_SIZE		64
+
 /* SM3 digest result for zero length message */
 #define EIP197_SM3_ZEROM_HASH	"\x1A\xB2\x1D\x83\x55\xCF\xA1\x7F" \
 				"\x8E\x61\x19\x48\x31\xE8\x1A\x8F" \
--- a/drivers/crypto/inside-secure/safexcel_hash.c
+++ b/drivers/crypto/inside-secure/safexcel_hash.c
@@ -53,9 +53,9 @@ struct safexcel_ahash_req {
 	u8 block_sz;    /* block size, only set once */
 	u8 digest_sz;   /* output digest size, only set once */
 	__le32 state[SHA3_512_BLOCK_SIZE /
-		     sizeof(__le32)] __aligned(sizeof(__le32));
+		     sizeof(__le32)] __aligned(SYSTEM_CACHELINE_SIZE);
 
-	u64 len;
+	u64 len __aligned(SYSTEM_CACHELINE_SIZE);
 	u64 processed;
 
 	u8 cache[HASH_CACHE_SIZE] __aligned(sizeof(u32));