Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 716c13a8 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull crypto fixes from Herbert Xu:
 "This fixes a build problem with sha-mb with old toolchains and an
  implementation bug in the ctr(aes)/by8 branch of aesni-intel that's
  enabled when AVX is available"

* git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
  crypto: sha-mb - Add avx2_supported check.
  crypto: aesni - fix "by8" variant for 128 bit keys
parents bdec4196 0b8c960c
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -26,7 +26,6 @@ obj-$(CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL) += ghash-clmulni-intel.o


obj-$(CONFIG_CRYPTO_CRC32C_INTEL) += crc32c-intel.o
obj-$(CONFIG_CRYPTO_CRC32C_INTEL) += crc32c-intel.o
obj-$(CONFIG_CRYPTO_SHA1_SSSE3) += sha1-ssse3.o
obj-$(CONFIG_CRYPTO_SHA1_SSSE3) += sha1-ssse3.o
obj-$(CONFIG_CRYPTO_SHA1_MB) += sha-mb/
obj-$(CONFIG_CRYPTO_CRC32_PCLMUL) += crc32-pclmul.o
obj-$(CONFIG_CRYPTO_CRC32_PCLMUL) += crc32-pclmul.o
obj-$(CONFIG_CRYPTO_SHA256_SSSE3) += sha256-ssse3.o
obj-$(CONFIG_CRYPTO_SHA256_SSSE3) += sha256-ssse3.o
obj-$(CONFIG_CRYPTO_SHA512_SSSE3) += sha512-ssse3.o
obj-$(CONFIG_CRYPTO_SHA512_SSSE3) += sha512-ssse3.o
@@ -46,6 +45,7 @@ endif
ifeq ($(avx2_supported),yes)
ifeq ($(avx2_supported),yes)
	obj-$(CONFIG_CRYPTO_CAMELLIA_AESNI_AVX2_X86_64) += camellia-aesni-avx2.o
	obj-$(CONFIG_CRYPTO_CAMELLIA_AESNI_AVX2_X86_64) += camellia-aesni-avx2.o
	obj-$(CONFIG_CRYPTO_SERPENT_AVX2_X86_64) += serpent-avx2.o
	obj-$(CONFIG_CRYPTO_SERPENT_AVX2_X86_64) += serpent-avx2.o
	obj-$(CONFIG_CRYPTO_SHA1_MB) += sha-mb/
endif
endif


aes-i586-y := aes-i586-asm_32.o aes_glue.o
aes-i586-y := aes-i586-asm_32.o aes_glue.o
+35 −11
Original line number Original line Diff line number Diff line
@@ -208,7 +208,7 @@ ddq_add_8:


	.if (klen == KEY_128)
	.if (klen == KEY_128)
		.if (load_keys)
		.if (load_keys)
			vmovdqa	3*16(p_keys), xkeyA
			vmovdqa	3*16(p_keys), xkey4
		.endif
		.endif
	.else
	.else
		vmovdqa	3*16(p_keys), xkeyA
		vmovdqa	3*16(p_keys), xkeyA
@@ -224,7 +224,7 @@ ddq_add_8:
	add	$(16*by), p_in
	add	$(16*by), p_in


	.if (klen == KEY_128)
	.if (klen == KEY_128)
		vmovdqa	4*16(p_keys), xkey4
		vmovdqa	4*16(p_keys), xkeyB
	.else
	.else
		.if (load_keys)
		.if (load_keys)
			vmovdqa	4*16(p_keys), xkey4
			vmovdqa	4*16(p_keys), xkey4
@@ -234,7 +234,12 @@ ddq_add_8:
	.set i, 0
	.set i, 0
	.rept by
	.rept by
		club XDATA, i
		club XDATA, i
		vaesenc	xkeyA, var_xdata, var_xdata		/* key 3 */
		/* key 3 */
		.if (klen == KEY_128)
			vaesenc	xkey4, var_xdata, var_xdata
		.else
			vaesenc	xkeyA, var_xdata, var_xdata
		.endif
		.set i, (i +1)
		.set i, (i +1)
	.endr
	.endr


@@ -243,13 +248,18 @@ ddq_add_8:
	.set i, 0
	.set i, 0
	.rept by
	.rept by
		club XDATA, i
		club XDATA, i
		vaesenc	xkey4, var_xdata, var_xdata		/* key 4 */
		/* key 4 */
		.if (klen == KEY_128)
			vaesenc	xkeyB, var_xdata, var_xdata
		.else
			vaesenc	xkey4, var_xdata, var_xdata
		.endif
		.set i, (i +1)
		.set i, (i +1)
	.endr
	.endr


	.if (klen == KEY_128)
	.if (klen == KEY_128)
		.if (load_keys)
		.if (load_keys)
			vmovdqa	6*16(p_keys), xkeyB
			vmovdqa	6*16(p_keys), xkey8
		.endif
		.endif
	.else
	.else
		vmovdqa	6*16(p_keys), xkeyB
		vmovdqa	6*16(p_keys), xkeyB
@@ -267,12 +277,17 @@ ddq_add_8:
	.set i, 0
	.set i, 0
	.rept by
	.rept by
		club XDATA, i
		club XDATA, i
		vaesenc	xkeyB, var_xdata, var_xdata		/* key 6 */
		/* key 6 */
		.if (klen == KEY_128)
			vaesenc	xkey8, var_xdata, var_xdata
		.else
			vaesenc	xkeyB, var_xdata, var_xdata
		.endif
		.set i, (i +1)
		.set i, (i +1)
	.endr
	.endr


	.if (klen == KEY_128)
	.if (klen == KEY_128)
		vmovdqa	8*16(p_keys), xkey8
		vmovdqa	8*16(p_keys), xkeyB
	.else
	.else
		.if (load_keys)
		.if (load_keys)
			vmovdqa	8*16(p_keys), xkey8
			vmovdqa	8*16(p_keys), xkey8
@@ -288,7 +303,7 @@ ddq_add_8:


	.if (klen == KEY_128)
	.if (klen == KEY_128)
		.if (load_keys)
		.if (load_keys)
			vmovdqa	9*16(p_keys), xkeyA
			vmovdqa	9*16(p_keys), xkey12
		.endif
		.endif
	.else
	.else
		vmovdqa	9*16(p_keys), xkeyA
		vmovdqa	9*16(p_keys), xkeyA
@@ -297,7 +312,12 @@ ddq_add_8:
	.set i, 0
	.set i, 0
	.rept by
	.rept by
		club XDATA, i
		club XDATA, i
		vaesenc	xkey8, var_xdata, var_xdata		/* key 8 */
		/* key 8 */
		.if (klen == KEY_128)
			vaesenc	xkeyB, var_xdata, var_xdata
		.else
			vaesenc	xkey8, var_xdata, var_xdata
		.endif
		.set i, (i +1)
		.set i, (i +1)
	.endr
	.endr


@@ -306,7 +326,12 @@ ddq_add_8:
	.set i, 0
	.set i, 0
	.rept by
	.rept by
		club XDATA, i
		club XDATA, i
		vaesenc	xkeyA, var_xdata, var_xdata		/* key 9 */
		/* key 9 */
		.if (klen == KEY_128)
			vaesenc	xkey12, var_xdata, var_xdata
		.else
			vaesenc	xkeyA, var_xdata, var_xdata
		.endif
		.set i, (i +1)
		.set i, (i +1)
	.endr
	.endr


@@ -412,7 +437,6 @@ ddq_add_8:
/* main body of aes ctr load */
/* main body of aes ctr load */


.macro do_aes_ctrmain key_len
.macro do_aes_ctrmain key_len

	cmp	$16, num_bytes
	cmp	$16, num_bytes
	jb	.Ldo_return2\key_len
	jb	.Ldo_return2\key_len