From: Linus Torvalds <torvalds@linux-foundation.org>
Date: Thu, 2 May 2013 21:53:12 +0000 (-0700)
Subject: Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=797994f81a8b2bdca2eecffa415c1e7a89a4f961;p=linux.git

Merge git://git./linux/kernel/git/herbert/crypto-2.6

Pull crypto update from Herbert Xu:

 - XTS mode optimisation for twofish/cast6/camellia/aes on x86

 - AVX2/x86_64 implementation for blowfish/twofish/serpent/camellia

 - SSSE3/AVX/AVX2 optimisations for sha256/sha512

 - Added driver for SAHARA2 crypto accelerator

 - Fix for GMAC when used in non-IPsec secnarios

 - Added generic CMAC implementation (including IPsec glue)

 - IP update for crypto/atmel

 - Support for more than one device in hwrng/timeriomem

 - Added Broadcom BCM2835 RNG driver

 - Misc fixes

* git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (59 commits)
  crypto: caam - fix job ring cleanup code
  crypto: camellia - add AVX2/AES-NI/x86_64 assembler implementation of camellia cipher
  crypto: serpent - add AVX2/x86_64 assembler implementation of serpent cipher
  crypto: twofish - add AVX2/x86_64 assembler implementation of twofish cipher
  crypto: blowfish - add AVX2/x86_64 implementation of blowfish cipher
  crypto: tcrypt - add async cipher speed tests for blowfish
  crypto: testmgr - extend camellia test-vectors for camellia-aesni/avx2
  crypto: aesni_intel - fix Kconfig problem with CRYPTO_GLUE_HELPER_X86
  crypto: aesni_intel - add more optimized XTS mode for x86-64
  crypto: x86/camellia-aesni-avx - add more optimized XTS code
  crypto: cast6-avx: use new optimized XTS code
  crypto: x86/twofish-avx - use optimized XTS code
  crypto: x86 - add more optimized XTS-mode for serpent-avx
  xfrm: add rfc4494 AES-CMAC-96 support
  crypto: add CMAC support to CryptoAPI
  crypto: testmgr - add empty test vectors for null ciphers
  crypto: testmgr - add AES GMAC test vectors
  crypto: gcm - fix rfc4543 to handle async crypto correctly
  crypto: gcm - make GMAC work when dst and src are different
  hwrng: timeriomem - added devicetree hooks
  ...
---

797994f81a8b2bdca2eecffa415c1e7a89a4f961
diff --cc crypto/gcm.c
index 13ccbda34ff97,b0d3cb12334db..43e1fb05ea548
--- a/crypto/gcm.c
+++ b/crypto/gcm.c
@@@ -1131,22 -1151,12 +1152,22 @@@ static struct aead_request *crypto_rfc4
  
  	sg_init_table(payload, 2);
  	sg_set_buf(payload, req->iv, 8);
- 	scatterwalk_crypto_chain(payload, dst, vdst == req->iv + 8, 2);
+ 	scatterwalk_crypto_chain(payload, src, vsrc == req->iv + 8, 2);
  	assoclen += 8 + req->cryptlen - (enc ? 0 : authsize);
  
 -	sg_init_table(assoc, 2);
 -	sg_set_page(assoc, sg_page(req->assoc), req->assoc->length,
 -		    req->assoc->offset);
 +	if (req->assoc->length == req->assoclen) {
 +		sg_init_table(assoc, 2);
 +		sg_set_page(assoc, sg_page(req->assoc), req->assoc->length,
 +			    req->assoc->offset);
 +	} else {
 +		BUG_ON(req->assoclen > sizeof(rctx->assocbuf));
 +
 +		scatterwalk_map_and_copy(rctx->assocbuf, req->assoc, 0,
 +					 req->assoclen, 0);
 +
 +		sg_init_table(assoc, 2);
 +		sg_set_buf(assoc, rctx->assocbuf, req->assoclen);
 +	}
  	scatterwalk_crypto_chain(assoc, payload, 0, 2);
  
  	aead_request_set_tfm(subreq, ctx->child);