android_kernel_samsung_msm8976/crypto
Eric Biggers 9bb5bf5381 crypto: ablkcipher - fix crash flushing dcache in error path
commit 318abdfbe708aaaa652c79fb500e9bd60521f9dc upstream.

Like the skcipher_walk and blkcipher_walk cases:

scatterwalk_done() is only meant to be called after a nonzero number of
bytes have been processed, since scatterwalk_pagedone() will flush the
dcache of the *previous* page.  But in the error case of
ablkcipher_walk_done(), e.g. if the input wasn't an integer number of
blocks, scatterwalk_done() was actually called after advancing 0 bytes.
This caused a crash ("BUG: unable to handle kernel paging request")
during '!PageSlab(page)' on architectures like arm and arm64 that define
ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE, provided that the input was
page-aligned as in that case walk->offset == 0.

Fix it by reorganizing ablkcipher_walk_done() to skip the
scatterwalk_advance() and scatterwalk_done() if an error has occurred.

Reported-by: Liu Chao <liuchao741@huawei.com>
Fixes: bf06099db1 ("crypto: skcipher - Add ablkcipher_walk interfaces")
Cc: <stable@vger.kernel.org> # v2.6.35+
Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2019-07-27 21:51:08 +02:00
..
asymmetric_keys crypto: crypto_memneq - add equality testing of memory regions w/o timing leaks 2019-07-27 21:42:52 +02:00
async_tx
842.c
Kconfig arm: crypto: Add optimized SHA-256/224 2015-09-16 18:20:15 +05:30
Makefile crypto: more robust crypto_memneq 2019-07-27 21:46:39 +02:00
ablk_helper.c crypto: ablk_helper - Replace memcpy with struct assignment 2015-03-19 14:52:28 -07:00
ablkcipher.c crypto: ablkcipher - fix crash flushing dcache in error path 2019-07-27 21:51:08 +02:00
aead.c
aes_generic.c
af_alg.c crypto: af_alg - whitelist mask and type 2019-07-27 21:49:16 +02:00
ahash.c crypto: hash - prevent using keyed hashes without setting key 2019-07-27 21:49:17 +02:00
algapi.c crypto: algapi - fix NULL dereference in crypto_remove_spawns() 2019-07-27 21:46:25 +02:00
algboss.c
algif_hash.c crypto: hash - prevent using keyed hashes without setting key 2019-07-27 21:49:17 +02:00
algif_skcipher.c crypto: AF_ALG - remove SGL terminator indicator when chaining 2019-07-27 21:44:42 +02:00
ansi_cprng.c
anubis.c
api.c crypto: api - Only abort operations on fatal signal 2015-11-09 10:12:59 -08:00
arc4.c
authenc.c crypto: crypto_memneq - add equality testing of memory regions w/o timing leaks 2019-07-27 21:42:52 +02:00
authencesn.c crypto: crypto_memneq - add equality testing of memory regions w/o timing leaks 2019-07-27 21:42:52 +02:00
blkcipher.c crypto: blkcipher - fix crash flushing dcache in error path 2019-07-27 21:51:08 +02:00
blowfish_common.c
blowfish_generic.c
camellia_generic.c
cast5_generic.c
cast6_generic.c
cast_common.c
cbc.c
ccm.c crypto: crypto_memneq - add equality testing of memory regions w/o timing leaks 2019-07-27 21:42:52 +02:00
chainiv.c This is the 3.10.67 stable release 2015-04-24 18:04:40 -07:00
cipher.c
cmac.c
compress.c
crc32.c crypto: hash - annotate algorithms taking optional key 2019-07-27 21:49:17 +02:00
crc32c.c crypto: hash - annotate algorithms taking optional key 2019-07-27 21:49:17 +02:00
cryptd.c crypto: hash - annotate algorithms taking optional key 2019-07-27 21:49:17 +02:00
crypto_null.c
crypto_user.c crypto: user - lock crypto_alg_list on alg dump 2016-02-19 14:22:41 -08:00
crypto_wq.c
ctr.c
cts.c crypto: memzero_explicit - make sure to clear out sensitive data 2019-07-27 21:51:07 +02:00
deflate.c
des_generic.c
ecb.c
eseqiv.c
fcrypt.c
fips.c
gcm.c crypto: gcm - wait for crypto op not signal safe 2019-07-27 21:44:48 +02:00
gf128mul.c
ghash-generic.c
hmac.c crypto: hmac - require that the underlying hash algorithm is unkeyed 2019-07-27 21:45:46 +02:00
internal.h
khazad.c
krng.c
lrw.c
lzo.c
md4.c
md5.c
memneq.c crypto: memneq - fix for archs without efficient unaligned access 2019-07-27 21:46:40 +02:00
michael_mic.c
pcbc.c
pcompress.c
pcrypt.c
proc.c
ripemd.h
rmd128.c
rmd160.c
rmd256.c
rmd320.c
rng.c
salsa20_generic.c crypto: salsa20 - fix blkcipher_walk API usage 2019-07-27 21:45:46 +02:00
scatterwalk.c crypto: scatterwalk - Fix test in scatterwalk_done 2019-07-27 21:41:53 +02:00
seed.c
seqiv.c
serpent_generic.c
sha1_generic.c crypto: memzero_explicit - make sure to clear out sensitive data 2019-07-27 21:51:07 +02:00
sha256_generic.c crypto: memzero_explicit - make sure to clear out sensitive data 2019-07-27 21:51:07 +02:00
sha512_generic.c crypto: memzero_explicit - make sure to clear out sensitive data 2019-07-27 21:51:07 +02:00
shash.c crypto: hash - prevent using keyed hashes without setting key 2019-07-27 21:49:17 +02:00
tcrypt.c
tcrypt.h
tea.c
testmgr.c
testmgr.h
tgr192.c crypto: memzero_explicit - make sure to clear out sensitive data 2019-07-27 21:51:07 +02:00
twofish_common.c
twofish_generic.c
vmac.c crypto: vmac - separate tfm and request context 2019-07-27 21:51:07 +02:00
wp512.c crypto: memzero_explicit - make sure to clear out sensitive data 2019-07-27 21:51:07 +02:00
xcbc.c
xor.c
xts.c
zlib.c