diff mbox

crypto: x86/sha512_ssse3 - fixup for asm function prototype change

Message ID 1429857429-13323-1-git-send-email-ard.biesheuvel@linaro.org (mailing list archive)
State Accepted
Delegated to: Herbert Xu
Headers show

Commit Message

Ard Biesheuvel April 24, 2015, 6:37 a.m. UTC
Patch e68410ebf626 ("crypto: x86/sha512_ssse3 - move SHA-384/512
SSSE3 implementation to base layer") changed the prototypes of the
core asm SHA-512 implementations so that they are compatible with
the prototype used by the base layer.

However, in one instance, the register that was used for passing the
input buffer was reused as a scratch register later on in the code,
and since the input buffer param changed places with the digest param
-which needs to be written back before the function returns- this
resulted in the scratch register to be dereferenced in a memory write
operation, causing a GPF.

Fix this by changing the scratch register to use the same register as
the input buffer param again.

Fixes: e68410ebf626 ("crypto: x86/sha512_ssse3 - move SHA-384/512 SSSE3 implementation to base layer")
Reported-By: Bobby Powers <bobbypowers@gmail.com>
Tested-By: Bobby Powers <bobbypowers@gmail.com>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
---
 arch/x86/crypto/sha512-avx2-asm.S | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Herbert Xu April 24, 2015, 12:20 p.m. UTC | #1
On Fri, Apr 24, 2015 at 08:37:09AM +0200, Ard Biesheuvel wrote:
> Patch e68410ebf626 ("crypto: x86/sha512_ssse3 - move SHA-384/512
> SSSE3 implementation to base layer") changed the prototypes of the
> core asm SHA-512 implementations so that they are compatible with
> the prototype used by the base layer.
> 
> However, in one instance, the register that was used for passing the
> input buffer was reused as a scratch register later on in the code,
> and since the input buffer param changed places with the digest param
> -which needs to be written back before the function returns- this
> resulted in the scratch register to be dereferenced in a memory write
> operation, causing a GPF.
> 
> Fix this by changing the scratch register to use the same register as
> the input buffer param again.
> 
> Fixes: e68410ebf626 ("crypto: x86/sha512_ssse3 - move SHA-384/512 SSSE3 implementation to base layer")
> Reported-By: Bobby Powers <bobbypowers@gmail.com>
> Tested-By: Bobby Powers <bobbypowers@gmail.com>
> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>

Patch applied.  Thanks!
diff mbox

Patch

diff --git a/arch/x86/crypto/sha512-avx2-asm.S b/arch/x86/crypto/sha512-avx2-asm.S
index a4771dcd1fcf..1f20b35d8573 100644
--- a/arch/x86/crypto/sha512-avx2-asm.S
+++ b/arch/x86/crypto/sha512-avx2-asm.S
@@ -79,7 +79,7 @@  NUM_BLKS    = %rdx
 c           = %rcx
 d           = %r8
 e           = %rdx
-y3          = %rdi
+y3          = %rsi
 
 TBL   = %rbp