summaryrefslogtreecommitdiffstats
path: root/arch/x86
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2016-05-20 19:25:16 +0200
committerLinus Torvalds <torvalds@linux-foundation.org>2016-05-20 19:25:16 +0200
commite4fba88d00d21f50239eac7d653027bfaf844296 (patch)
treec1d655d94fa646170f39d3bcd3d03883d6b56ebd /arch/x86
parentirqchip: nps: add 64BIT dependency (diff)
parentcrypto: sha1-mb - make sha1_x8_avx2() conform to C function ABI (diff)
downloadlinux-e4fba88d00d21f50239eac7d653027bfaf844296.tar.xz
linux-e4fba88d00d21f50239eac7d653027bfaf844296.zip
Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
Pull crypto fix from Herbert Xu: "Fix a regression that causes sha-mb to crash" * 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: crypto: sha1-mb - make sha1_x8_avx2() conform to C function ABI
Diffstat (limited to 'arch/x86')
-rw-r--r--arch/x86/crypto/sha-mb/sha1_x8_avx2.S13
1 files changed, 11 insertions, 2 deletions
diff --git a/arch/x86/crypto/sha-mb/sha1_x8_avx2.S b/arch/x86/crypto/sha-mb/sha1_x8_avx2.S
index 8e1b47792b31..c9dae1cd2919 100644
--- a/arch/x86/crypto/sha-mb/sha1_x8_avx2.S
+++ b/arch/x86/crypto/sha-mb/sha1_x8_avx2.S
@@ -296,7 +296,11 @@ W14 = TMP_
#
ENTRY(sha1_x8_avx2)
- push RSP_SAVE
+ # save callee-saved clobbered registers to comply with C function ABI
+ push %r12
+ push %r13
+ push %r14
+ push %r15
#save rsp
mov %rsp, RSP_SAVE
@@ -446,7 +450,12 @@ lloop:
## Postamble
mov RSP_SAVE, %rsp
- pop RSP_SAVE
+
+ # restore callee-saved clobbered registers
+ pop %r15
+ pop %r14
+ pop %r13
+ pop %r12
ret
ENDPROC(sha1_x8_avx2)