[openssl: 22/22] - revert upstream change in s390x bignum asm routines

Tomáš Mráz tmraz at fedoraproject.org
Mon Nov 22 14:15:15 UTC 2010


commit 23675ff78b802141744d8760d51ba836a5c769bf
Author: Tomas Mraz <tmraz at fedoraproject.org>
Date:   Mon Nov 22 15:15:11 2010 +0100

    - revert upstream change in s390x bignum asm routines

 openssl-1.0.0b-s390bn.patch |  177 +++++++++++++++++++++++++++++++++++++++++++
 openssl.spec                |    7 ++-
 2 files changed, 183 insertions(+), 1 deletions(-)
---
diff --git a/openssl-1.0.0b-s390bn.patch b/openssl-1.0.0b-s390bn.patch
new file mode 100644
index 0000000..a360815
--- /dev/null
+++ b/openssl-1.0.0b-s390bn.patch
@@ -0,0 +1,177 @@
+diff -up openssl-1.0.0b/crypto/bn/asm/s390x.S.s390bn openssl-1.0.0b/crypto/bn/asm/s390x.S
+--- openssl-1.0.0b/crypto/bn/asm/s390x.S.s390bn	2010-09-10 16:55:24.000000000 +0200
++++ openssl-1.0.0b/crypto/bn/asm/s390x.S	2007-06-20 16:10:16.000000000 +0200
+@@ -1,4 +1,4 @@
+-.ident "s390x.S, version 1.1"
++.ident "s390x.S, version 1.0"
+ // ====================================================================
+ // Written by Andy Polyakov <appro at fy.chalmers.se> for the OpenSSL
+ // project.
+@@ -24,67 +24,67 @@ bn_mul_add_words:
+ 	bler	%r14		// if (len<=0) return 0;
+ 
+ 	stmg	%r6,%r10,48(%r15)
+-	lghi	%r10,3
+ 	lghi	%r8,0		// carry = 0
+-	nr	%r10,%r4	// len%4
+-	sra	%r4,2		// cnt=len/4
+-	jz	.Loop1_madd	// carry is incidentally cleared if branch taken
+-	algr	zero,zero	// clear carry
++	srag	%r10,%r4,2	// cnt=len/4
++	jz	.Loop1_madd
+ 
+ .Loop4_madd:
+ 	lg	%r7,0(%r2,%r3)	// ap[i]
+ 	mlgr	%r6,%r5		// *=w
+-	alcgr	%r7,%r8		// +=carry
++	algr	%r7,%r8		// +=carry
+ 	alcgr	%r6,zero
+ 	alg	%r7,0(%r2,%r1)	// +=rp[i]
++	alcgr	%r6,zero
+ 	stg	%r7,0(%r2,%r1)	// rp[i]=
+ 
+ 	lg	%r9,8(%r2,%r3)
+ 	mlgr	%r8,%r5
+-	alcgr	%r9,%r6
++	algr	%r9,%r6
+ 	alcgr	%r8,zero
+ 	alg	%r9,8(%r2,%r1)
++	alcgr	%r8,zero
+ 	stg	%r9,8(%r2,%r1)
+ 
+ 	lg	%r7,16(%r2,%r3)
+ 	mlgr	%r6,%r5
+-	alcgr	%r7,%r8
++	algr	%r7,%r8
+ 	alcgr	%r6,zero
+ 	alg	%r7,16(%r2,%r1)
++	alcgr	%r6,zero
+ 	stg	%r7,16(%r2,%r1)
+ 
+ 	lg	%r9,24(%r2,%r3)
+ 	mlgr	%r8,%r5
+-	alcgr	%r9,%r6
++	algr	%r9,%r6
+ 	alcgr	%r8,zero
+ 	alg	%r9,24(%r2,%r1)
++	alcgr	%r8,zero
+ 	stg	%r9,24(%r2,%r1)
+ 
+ 	la	%r2,32(%r2)	// i+=4
+-	brct	%r4,.Loop4_madd
+-
+-	la	%r10,1(%r10)		// see if len%4 is zero ...
+-	brct	%r10,.Loop1_madd	// without touching condition code:-)
++	brct	%r10,.Loop4_madd
+ 
+-.Lend_madd:
+-	alcgr	%r8,zero	// collect carry bit
+-	lgr	%r2,%r8
+-	lmg	%r6,%r10,48(%r15)
+-	br	%r14
++	lghi	%r10,3
++	nr	%r4,%r10	// cnt=len%4
++	jz	.Lend_madd
+ 
+ .Loop1_madd:
+ 	lg	%r7,0(%r2,%r3)	// ap[i]
+ 	mlgr	%r6,%r5		// *=w
+-	alcgr	%r7,%r8		// +=carry
++	algr	%r7,%r8		// +=carry
+ 	alcgr	%r6,zero
+ 	alg	%r7,0(%r2,%r1)	// +=rp[i]
++	alcgr	%r6,zero
+ 	stg	%r7,0(%r2,%r1)	// rp[i]=
+ 
+ 	lgr	%r8,%r6
+ 	la	%r2,8(%r2)	// i++
+-	brct	%r10,.Loop1_madd
++	brct	%r4,.Loop1_madd
+ 
+-	j	.Lend_madd
++.Lend_madd:
++	lgr	%r2,%r8
++	lmg	%r6,%r10,48(%r15)
++	br	%r14
+ .size	bn_mul_add_words,.-bn_mul_add_words
+ 
+ // BN_ULONG bn_mul_words(BN_ULONG *r2,BN_ULONG *r3,int r4,BN_ULONG r5);
+@@ -99,57 +99,57 @@ bn_mul_words:
+ 	bler	%r14		// if (len<=0) return 0;
+ 
+ 	stmg	%r6,%r10,48(%r15)
+-	lghi	%r10,3
+ 	lghi	%r8,0		// carry = 0
+-	nr	%r10,%r4	// len%4
+-	sra	%r4,2		// cnt=len/4
+-	jz	.Loop1_mul	// carry is incidentally cleared if branch taken
+-	algr	zero,zero	// clear carry
++	srag	%r10,%r4,2	// cnt=len/4
++	jz	.Loop1_mul
+ 
+ .Loop4_mul:
+ 	lg	%r7,0(%r2,%r3)	// ap[i]
+ 	mlgr	%r6,%r5		// *=w
+-	alcgr	%r7,%r8		// +=carry
++	algr	%r7,%r8		// +=carry
++	alcgr	%r6,zero
+ 	stg	%r7,0(%r2,%r1)	// rp[i]=
+ 
+ 	lg	%r9,8(%r2,%r3)
+ 	mlgr	%r8,%r5
+-	alcgr	%r9,%r6
++	algr	%r9,%r6
++	alcgr	%r8,zero
+ 	stg	%r9,8(%r2,%r1)
+ 
+ 	lg	%r7,16(%r2,%r3)
+ 	mlgr	%r6,%r5
+-	alcgr	%r7,%r8
++	algr	%r7,%r8
++	alcgr	%r6,zero
+ 	stg	%r7,16(%r2,%r1)
+ 
+ 	lg	%r9,24(%r2,%r3)
+ 	mlgr	%r8,%r5
+-	alcgr	%r9,%r6
++	algr	%r9,%r6
++	alcgr	%r8,zero
+ 	stg	%r9,24(%r2,%r1)
+ 
+ 	la	%r2,32(%r2)	// i+=4
+-	brct	%r4,.Loop4_mul
+-
+-	la	%r10,1(%r10)		// see if len%4 is zero ...
+-	brct	%r10,.Loop1_madd	// without touching condition code:-)
++	brct	%r10,.Loop4_mul
+ 
+-.Lend_mul:
+-	alcgr	%r8,zero	// collect carry bit
+-	lgr	%r2,%r8
+-	lmg	%r6,%r10,48(%r15)
+-	br	%r14
++	lghi	%r10,3
++	nr	%r4,%r10	// cnt=len%4
++	jz	.Lend_mul
+ 
+ .Loop1_mul:
+ 	lg	%r7,0(%r2,%r3)	// ap[i]
+ 	mlgr	%r6,%r5		// *=w
+-	alcgr	%r7,%r8		// +=carry
++	algr	%r7,%r8		// +=carry
++	alcgr	%r6,zero
+ 	stg	%r7,0(%r2,%r1)	// rp[i]=
+ 
+ 	lgr	%r8,%r6
+ 	la	%r2,8(%r2)	// i++
+-	brct	%r10,.Loop1_mul
++	brct	%r4,.Loop1_mul
+ 
+-	j	.Lend_mul
++.Lend_mul:
++	lgr	%r2,%r8
++	lmg	%r6,%r10,48(%r15)
++	br	%r14
+ .size	bn_mul_words,.-bn_mul_words
+ 
+ // void bn_sqr_words(BN_ULONG *r2,BN_ULONG *r2,int r4)
diff --git a/openssl.spec b/openssl.spec
index 8e4a9de..2295a61 100644
--- a/openssl.spec
+++ b/openssl.spec
@@ -21,7 +21,7 @@
 Summary: A general purpose cryptography library with TLS implementation
 Name: openssl
 Version: 1.0.0b
-Release: 1%{?dist}
+Release: 2%{?dist}
 # We remove certain patented algorithms from the openssl source tarball
 # with the hobble-openssl script which is included below.
 Source: openssl-%{version}-usa.tar.bz2
@@ -44,6 +44,7 @@ Patch7: openssl-1.0.0-timezone.patch
 Patch23: openssl-1.0.0-beta4-default-paths.patch
 Patch24: openssl-0.9.8j-bad-mime.patch
 Patch25: openssl-1.0.0a-manfix.patch
+Patch26: openssl-1.0.0b-s390bn.patch
 # Functionality changes
 Patch32: openssl-0.9.8g-ia64.patch
 Patch33: openssl-1.0.0-beta4-ca-dir.patch
@@ -126,6 +127,7 @@ from other formats to the formats used by the OpenSSL toolkit.
 %patch23 -p1 -b .default-paths
 %patch24 -p1 -b .bad-mime
 %patch25 -p1 -b .manfix
+%patch26 -p1 -b .s390bn
 
 %patch32 -p1 -b .ia64
 %patch33 -p1 -b .ca-dir
@@ -393,6 +395,9 @@ rm -rf $RPM_BUILD_ROOT/%{_libdir}/fipscanister.*
 %postun -p /sbin/ldconfig
 
 %changelog
+* Mon Nov 22 2010 Tomas Mraz <tmraz at redhat.com> 1.0.0b-2
+- revert upstream change in s390x bignum asm routines
+
 * Tue Nov 16 2010 Tomas Mraz <tmraz at redhat.com> 1.0.0b-1
 - new upstream version fixing CVE-2010-3864 (#649304)
 


More information about the scm-commits mailing list