arm64/crypto: fix data corruption bug in GHASH algorithm
authorArd Biesheuvel <ard.biesheuvel@linaro.org>
Mon, 16 Jun 2014 10:02:15 +0000 (11:02 +0100)
committerCatalin Marinas <catalin.marinas@arm.com>
Wed, 18 Jun 2014 11:40:53 +0000 (12:40 +0100)
This fixes a bug in the GHASH algorithm resulting in the calculated hash to be
incorrect if the input is presented in chunks whose size is not a multiple of
16 bytes.

Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Fixes: fdd2389457b2 ("arm64/crypto: GHASH secure hash using ARMv8 Crypto Extensions")
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
arch/arm64/crypto/ghash-ce-glue.c

index b92baf3f68c72b27453140e362d723b94ead4812..ef6aa69c4e0c9d398e1c809aea55682b543cb306 100644 (file)
@@ -72,6 +72,7 @@ static int ghash_update(struct shash_desc *desc, const u8 *src,
                                   partial ? ctx->buf : NULL);
                kernel_neon_end();
                src += blocks * GHASH_BLOCK_SIZE;
+               partial = 0;
        }
        if (len)
                memcpy(ctx->buf + partial, src, len);