summary refs log tree commit diff
path: root/arch/x86/crypto
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2016-05-20 10:25:16 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2016-05-20 10:25:16 -0700
commite4fba88d00d21f50239eac7d653027bfaf844296 (patch)
treec1d655d94fa646170f39d3bcd3d03883d6b56ebd /arch/x86/crypto
parentffd565e315aa8211365bb6864000f04e7b277f59 (diff)
parent4a6b27b79da5ccc6b85dc05bbe6a091e58be896a (diff)
downloadlinux-e4fba88d00d21f50239eac7d653027bfaf844296.tar.gz
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/crypto')
-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)