Rename the 'struct ghash_key' in arch/arm64/crypto/ghash-ce-glue.c to
prevent a naming conflict with the library 'struct ghash_key'.  In
addition, declare the 'h' field with an explicit size, now that there's
no longer any reason for it to be a flexible array.

Update the comments in the assembly file to match the C code.  Note that
some of these were out-of-date.

Signed-off-by: Eric Biggers <[email protected]>
---
 arch/arm64/crypto/ghash-ce-core.S | 15 ++++++++-------
 arch/arm64/crypto/ghash-ce-glue.c | 20 +++++++++-----------
 2 files changed, 17 insertions(+), 18 deletions(-)

diff --git a/arch/arm64/crypto/ghash-ce-core.S 
b/arch/arm64/crypto/ghash-ce-core.S
index a01f136f4fb2..33772d8fe6b5 100644
--- a/arch/arm64/crypto/ghash-ce-core.S
+++ b/arch/arm64/crypto/ghash-ce-core.S
@@ -62,11 +62,11 @@
        pmull           XL.1q, XL.1d, MASK.1d
        .endm
 
        /*
         * void pmull_ghash_update_p64(int blocks, u64 dg[], const char *src,
-        *                             u64 const h[][2], const char *head)
+        *                             u64 const h[4][2], const char *head)
         */
 SYM_FUNC_START(pmull_ghash_update_p64)
        ld1             {SHASH.2d}, [x3]
        ld1             {XL.2d}, [x1]
 
@@ -411,22 +411,23 @@ CPU_LE(   rev             w8, w8          )
        .endif
        b               3b
        .endm
 
        /*
-        * void pmull_gcm_encrypt(int blocks, u8 dst[], const u8 src[],
-        *                        struct ghash_key const *k, u64 dg[], u8 ctr[],
-        *                        int rounds, u8 tag)
+        * void pmull_gcm_encrypt(int bytes, u8 dst[], const u8 src[],
+        *                        u64 const h[4][2], u64 dg[], u8 ctr[],
+        *                        u32 const rk[], int rounds, u8 tag[])
         */
 SYM_FUNC_START(pmull_gcm_encrypt)
        pmull_gcm_do_crypt      1
 SYM_FUNC_END(pmull_gcm_encrypt)
 
        /*
-        * void pmull_gcm_decrypt(int blocks, u8 dst[], const u8 src[],
-        *                        struct ghash_key const *k, u64 dg[], u8 ctr[],
-        *                        int rounds, u8 tag)
+        * int pmull_gcm_decrypt(int bytes, u8 dst[], const u8 src[],
+        *                       u64 const h[4][2], u64 dg[], u8 ctr[],
+        *                       u32 const rk[], int rounds, const u8 l[],
+        *                       const u8 tag[], u64 authsize)
         */
 SYM_FUNC_START(pmull_gcm_decrypt)
        pmull_gcm_do_crypt      0
 SYM_FUNC_END(pmull_gcm_decrypt)
 
diff --git a/arch/arm64/crypto/ghash-ce-glue.c 
b/arch/arm64/crypto/ghash-ce-glue.c
index 42fb46bdc124..c74066d430fa 100644
--- a/arch/arm64/crypto/ghash-ce-glue.c
+++ b/arch/arm64/crypto/ghash-ce-glue.c
@@ -28,38 +28,38 @@ MODULE_LICENSE("GPL v2");
 MODULE_ALIAS_CRYPTO("gcm(aes)");
 MODULE_ALIAS_CRYPTO("rfc4106(gcm(aes))");
 
 #define RFC4106_NONCE_SIZE     4
 
-struct ghash_key {
+struct arm_ghash_key {
        be128                   k;
-       u64                     h[][2];
+       u64                     h[4][2];
 };
 
 struct arm_ghash_desc_ctx {
        u64 digest[GHASH_DIGEST_SIZE/sizeof(u64)];
 };
 
 struct gcm_aes_ctx {
        struct aes_enckey       aes_key;
        u8                      nonce[RFC4106_NONCE_SIZE];
-       struct ghash_key        ghash_key;
+       struct arm_ghash_key    ghash_key;
 };
 
 asmlinkage void pmull_ghash_update_p64(int blocks, u64 dg[], const char *src,
-                                      u64 const h[][2], const char *head);
+                                      u64 const h[4][2], const char *head);
 
 asmlinkage void pmull_gcm_encrypt(int bytes, u8 dst[], const u8 src[],
-                                 u64 const h[][2], u64 dg[], u8 ctr[],
+                                 u64 const h[4][2], u64 dg[], u8 ctr[],
                                  u32 const rk[], int rounds, u8 tag[]);
 asmlinkage int pmull_gcm_decrypt(int bytes, u8 dst[], const u8 src[],
-                                u64 const h[][2], u64 dg[], u8 ctr[],
+                                u64 const h[4][2], u64 dg[], u8 ctr[],
                                 u32 const rk[], int rounds, const u8 l[],
                                 const u8 tag[], u64 authsize);
 
 static void ghash_do_simd_update(int blocks, u64 dg[], const char *src,
-                                struct ghash_key *key, const char *head)
+                                struct arm_ghash_key *key, const char *head)
 {
        scoped_ksimd()
                pmull_ghash_update_p64(blocks, dg, src, key->h, head);
 }
 
@@ -365,12 +365,11 @@ static struct aead_alg gcm_aes_algs[] = {{
 
        .base.cra_name          = "gcm(aes)",
        .base.cra_driver_name   = "gcm-aes-ce",
        .base.cra_priority      = 300,
        .base.cra_blocksize     = 1,
-       .base.cra_ctxsize       = sizeof(struct gcm_aes_ctx) +
-                                 4 * sizeof(u64[2]),
+       .base.cra_ctxsize       = sizeof(struct gcm_aes_ctx),
        .base.cra_module        = THIS_MODULE,
 }, {
        .ivsize                 = GCM_RFC4106_IV_SIZE,
        .chunksize              = AES_BLOCK_SIZE,
        .maxauthsize            = AES_BLOCK_SIZE,
@@ -381,12 +380,11 @@ static struct aead_alg gcm_aes_algs[] = {{
 
        .base.cra_name          = "rfc4106(gcm(aes))",
        .base.cra_driver_name   = "rfc4106-gcm-aes-ce",
        .base.cra_priority      = 300,
        .base.cra_blocksize     = 1,
-       .base.cra_ctxsize       = sizeof(struct gcm_aes_ctx) +
-                                 4 * sizeof(u64[2]),
+       .base.cra_ctxsize       = sizeof(struct gcm_aes_ctx),
        .base.cra_module        = THIS_MODULE,
 }};
 
 static int __init ghash_ce_mod_init(void)
 {
-- 
2.53.0


Reply via email to