linux/drivers/crypto
Herbert Xu 46d8c4b286 crypto: padlock-aes - Fix Nano workaround data corruption
This was detected by the self-test thanks to Ard's chunking patch.

I finally got around to testing this out on my ancient Via box.  It
turns out that the workaround got the assembly wrong and we end up
doing count + initial cycles of the loop instead of just count.

This obviously causes corruption, either by overwriting the source
that is yet to be processed, or writing over the end of the buffer.

On CPUs that don't require the workaround only ECB is affected.
On Nano CPUs both ECB and CBC are affected.

This patch fixes it by doing the subtraction prior to the assembly.

Fixes: a76c1c23d0 ("crypto: padlock-aes - work around Nano CPU...")
Cc: <stable@vger.kernel.org>
Reported-by: Jamie Heilman <jamie@audible.transient.net>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2018-07-20 13:47:42 +08:00
..
amcc crypto: crypto4xx - put temporary dst sg into request ctx 2018-04-28 16:09:45 +08:00
axis crypto: axis - remove unnecessary platform_get_resource() error check 2018-01-26 01:10:29 +11:00
bcm crypto: brcm - explicitly cast cipher to hash type 2018-03-31 01:33:14 +08:00
caam crypto: caam/qi - fix warning in init_cgr() 2018-05-31 00:13:47 +08:00
cavium crypto: cavium - Remove unnecessary parentheses 2018-04-28 16:09:38 +08:00
ccp crypto: ccp - Add GET_ID SEV command 2018-05-31 00:13:56 +08:00
ccree crypto: ccree - silence debug prints 2018-05-31 00:13:50 +08:00
chelsio crypto: chtls - use after free in chtls_pt_recvmsg() 2018-06-15 23:06:45 +08:00
inside-secure crypto: inside-secure - authenc(hmac(sha1), cbc(aes)) support 2018-05-27 00:12:01 +08:00
marvell crypto: marvell/cesa - Clean up redundant #include 2018-03-03 00:03:13 +08:00
mediatek crypto: mediatek - move to generic async completion 2017-11-03 22:11:23 +08:00
nx crypto: nx - fix spelling mistake: "seqeunce" -> "sequence" 2018-05-19 00:13:55 +08:00
qat crypto: qat - Add MODULE_FIRMWARE for all qat drivers 2018-05-31 00:13:51 +08:00
qce Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2017-11-14 10:52:09 -08:00
rockchip License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
stm32 crypto: stm32/cryp - add stm32mp1 support 2018-02-15 23:26:57 +08:00
sunxi-ss crypto: sunxi-ss - Add MODULE_ALIAS to sun4i-ss 2018-02-22 22:16:15 +08:00
ux500 crypto: ux500 - Delete two unnecessary variable initialisations in ux500_cryp_probe() 2018-02-22 22:16:34 +08:00
virtio crypto: virtio - remove dependency on CRYPTO_AUTHENC 2018-03-16 23:35:51 +08:00
vmx crypto: clarify licensing of OpenSSL asm code 2018-05-31 00:13:44 +08:00
atmel-aes-regs.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
atmel-aes.c crypto: atmel-aes - fix the keys zeroing on errors 2018-03-03 00:03:40 +08:00
atmel-authenc.h crypto: atmel-authenc - add support to authenc(hmac(shaX), Y(aes)) modes 2017-02-03 18:16:14 +08:00
atmel-ecc.c crypto: atmel-ecc - fix signed integer to u8 assignment 2017-08-03 13:47:23 +08:00
atmel-ecc.h crypto: atmel-ecc - introduce Microchip / Atmel ECC driver 2017-07-18 17:50:58 +08:00
atmel-sha-regs.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
atmel-sha.c crypto: atmel - Delete error messages for a failed memory allocation in six functions 2018-02-22 22:17:00 +08:00
atmel-tdes-regs.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
atmel-tdes.c crypto: atmel - Delete error messages for a failed memory allocation in six functions 2018-02-22 22:17:00 +08:00
exynos-rng.c crypto: drivers - simplify getting .drvdata 2018-04-28 16:09:35 +08:00
geode-aes.c crypto: geode-aes - fixed coding style warnings and error 2017-07-18 18:15:57 +08:00
geode-aes.h crypto: geode - Consistently use AES_KEYSIZE_128 2014-05-22 21:03:12 +08:00
hifn_795x.c crypto: hifn_795x - Fix a memory leak in the error handling path of 'hifn_probe()' 2017-11-29 17:33:30 +11:00
img-hash.c crypto: img-hash - remove unnecessary static in img_hash_remove() 2017-08-03 13:47:18 +08:00
ixp4xx_crypto.c crypto: ixp4xx - don't leak pointers to authenc keys 2018-03-31 01:33:12 +08:00
Kconfig crypto: inside-secure - authenc(hmac(sha256), cbc(aes)) support 2018-05-27 00:11:59 +08:00
Makefile crypto: bfin_crc - remove blackfin CRC driver 2018-03-23 23:48:37 +08:00
mxc-scc.c crypto: mxc-scc - fix error code in mxc_scc_probe() 2017-07-18 17:50:54 +08:00
mxs-dcp.c crypto: mxs-dcp - Add empty hash export and import 2018-02-15 23:23:44 +08:00
n2_asm.S License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
n2_core.c crypto: n2 - Add empty hash export and import 2018-02-15 23:23:45 +08:00
n2_core.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
omap-aes-gcm.c crypto: omap-aes - pr_err() strings should end with newlines 2017-10-12 22:54:51 +08:00
omap-aes.c crypto: omap-aes - make queue length configurable 2018-03-09 22:45:39 +08:00
omap-aes.h crypto: omap - convert to new crypto engine API 2018-02-15 23:26:51 +08:00
omap-crypto.c crypto: omap-crypto - Verify page zone scatterlists before starting DMA 2018-03-09 22:45:36 +08:00
omap-crypto.h crypto: omap - add base support library for common routines 2017-06-10 12:04:15 +08:00
omap-des.c crypto: omap - convert to new crypto engine API 2018-02-15 23:26:51 +08:00
omap-sham.c crypto: omap-sham - fix memleak 2018-04-28 16:09:35 +08:00
padlock-aes.c crypto: padlock-aes - Fix Nano workaround data corruption 2018-07-20 13:47:42 +08:00
padlock-sha.c crypto: padlock-sha - constify x86_cpu_id 2017-09-22 17:43:20 +08:00
picoxcell_crypto.c crypto: drivers - simplify getting .drvdata 2018-04-28 16:09:35 +08:00
picoxcell_crypto_regs.h
s5p-sss.c crypto: s5p-sss - Constify pointed data (arguments and local variables) 2018-03-09 22:45:47 +08:00
sahara.c crypto: sahara - Improve a size determination in sahara_probe() 2018-02-22 22:16:38 +08:00
talitos.c crypto: talitos - don't leak pointers to authenc keys 2018-03-31 01:33:14 +08:00
talitos.h crypto: talitos - chain in buffered data for ahash on SEC1 2017-10-12 22:55:38 +08:00