crypto: x86/sha1 - Fix reads beyond the number of blocks passed
authormegha.dey@linux.intel.com <megha.dey@linux.intel.com>
Wed, 2 Aug 2017 20:49:09 +0000 (13:49 -0700)
committerHerbert Xu <herbert@gondor.apana.org.au>
Wed, 9 Aug 2017 12:01:37 +0000 (20:01 +0800)
commit8861249c740fc4af9ddc5aee321eafefb960d7c6
tree1c79fc822f74626f9a8dbf80b17c93a8d3b59801
parent28389575a8cf933a5f3c378556b9f4d3cce0efd2
crypto: x86/sha1 - Fix reads beyond the number of blocks passed

It was reported that the sha1 AVX2 function(sha1_transform_avx2) is
reading ahead beyond its intended data, and causing a crash if the next
block is beyond page boundary:
http://marc.info/?l=linux-crypto-vger&m=149373371023377

This patch makes sure that there is no overflow for any buffer length.

It passes the tests written by Jan Stancek that revealed this problem:
https://github.com/jstancek/sha1-avx2-crash

I have re-enabled sha1-avx2 by reverting commit
b82ce24426a4071da9529d726057e4e642948667

Cc: <stable@vger.kernel.org>
Fixes: b82ce24426a4 ("crypto: sha1-ssse3 - Disable avx2")
Originally-by: Ilya Albrekht <ilya.albrekht@intel.com>
Tested-by: Jan Stancek <jstancek@redhat.com>
Signed-off-by: Megha Dey <megha.dey@linux.intel.com>
Reported-by: Jan Stancek <jstancek@redhat.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
arch/x86/crypto/sha1_avx2_x86_64_asm.S
arch/x86/crypto/sha1_ssse3_glue.c