crypto: x86/ghash - use le128 instead of u128
authorEric Biggers <ebiggers@google.com>
Tue, 20 Dec 2022 05:40:41 +0000 (21:40 -0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 30 Dec 2022 09:57:42 +0000 (17:57 +0800)
The u128 struct type is going away, so make ghash-clmulni-intel use
le128 instead.  Note that the field names a and b swapped, as they were
backwards with u128.  (a is meant to be high-order and b low-order.)

Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
arch/x86/crypto/ghash-clmulni-intel_asm.S
arch/x86/crypto/ghash-clmulni-intel_glue.c

index 2bf8718..9dfeb4d 100644 (file)
@@ -88,7 +88,7 @@ SYM_FUNC_START_LOCAL(__clmul_gf128mul_ble)
        RET
 SYM_FUNC_END(__clmul_gf128mul_ble)
 
-/* void clmul_ghash_mul(char *dst, const u128 *shash) */
+/* void clmul_ghash_mul(char *dst, const le128 *shash) */
 SYM_FUNC_START(clmul_ghash_mul)
        FRAME_BEGIN
        movups (%rdi), DATA
@@ -104,7 +104,7 @@ SYM_FUNC_END(clmul_ghash_mul)
 
 /*
  * void clmul_ghash_update(char *dst, const char *src, unsigned int srclen,
- *                        const u128 *shash);
+ *                        const le128 *shash);
  */
 SYM_FUNC_START(clmul_ghash_update)
        FRAME_BEGIN
index c0ab0ff..9453b09 100644 (file)
 #define GHASH_BLOCK_SIZE       16
 #define GHASH_DIGEST_SIZE      16
 
-void clmul_ghash_mul(char *dst, const u128 *shash);
+void clmul_ghash_mul(char *dst, const le128 *shash);
 
 void clmul_ghash_update(char *dst, const char *src, unsigned int srclen,
-                       const u128 *shash);
+                       const le128 *shash);
 
 struct ghash_async_ctx {
        struct cryptd_ahash *cryptd_tfm;
 };
 
 struct ghash_ctx {
-       u128 shash;
+       le128 shash;
 };
 
 struct ghash_desc_ctx {
@@ -64,11 +64,11 @@ static int ghash_setkey(struct crypto_shash *tfm,
        a = get_unaligned_be64(key);
        b = get_unaligned_be64(key + 8);
 
-       ctx->shash.a = (b << 1) | (a >> 63);
-       ctx->shash.b = (a << 1) | (b >> 63);
+       ctx->shash.a = cpu_to_le64((a << 1) | (b >> 63));
+       ctx->shash.b = cpu_to_le64((b << 1) | (a >> 63));
 
        if (a >> 63)
-               ctx->shash.b ^= ((u64)0xc2) << 56;
+               ctx->shash.a ^= cpu_to_le64((u64)0xc2 << 56);
 
        return 0;
 }