2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2024-12-29 15:43:59 +08:00
linux-next/drivers/crypto/ccp
John Allen 8a302808c6 crypto: ccp - Fix use of merged scatterlists
Running the crypto manager self tests with
CONFIG_CRYPTO_MANAGER_EXTRA_TESTS may result in several types of errors
when using the ccp-crypto driver:

alg: skcipher: cbc-des3-ccp encryption failed on test vector 0; expected_error=0, actual_error=-5 ...

alg: skcipher: ctr-aes-ccp decryption overran dst buffer on test vector 0 ...

alg: ahash: sha224-ccp test failed (wrong result) on test vector ...

These errors are the result of improper processing of scatterlists mapped
for DMA.

Given a scatterlist in which entries are merged as part of mapping the
scatterlist for DMA, the DMA length of a merged entry will reflect the
combined length of the entries that were merged. The subsequent
scatterlist entry will contain DMA information for the scatterlist entry
after the last merged entry, but the non-DMA information will be that of
the first merged entry.

The ccp driver does not take this scatterlist merging into account. To
address this, add a second scatterlist pointer to track the current
position in the DMA mapped representation of the scatterlist. Both the DMA
representation and the original representation of the scatterlist must be
tracked as while most of the driver can use just the DMA representation,
scatterlist_map_and_copy() must use the original representation and
expects the scatterlist pointer to be accurate to the original
representation.

In order to properly walk the original scatterlist, the scatterlist must
be walked until the combined lengths of the entries seen is equal to the
DMA length of the current entry being processed in the DMA mapped
representation.

Fixes: 63b945091a ("crypto: ccp - CCP device driver and interface support")
Signed-off-by: John Allen <john.allen@amd.com>
Cc: stable@vger.kernel.org
Acked-by: Tom Lendacky <thomas.lendacky@amd.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2020-07-03 14:18:34 +10:00
..
ccp-crypto-aes-cmac.c crypto: remove CRYPTO_TFM_RES_BAD_KEY_LEN 2020-01-09 11:30:53 +08:00
ccp-crypto-aes-galois.c crypto: remove CRYPTO_TFM_RES_BAD_KEY_LEN 2020-01-09 11:30:53 +08:00
ccp-crypto-aes-xts.c crypto: ccp - switch from ablkcipher to skcipher 2019-11-17 09:02:45 +08:00
ccp-crypto-aes.c crypto: remove CRYPTO_TFM_RES_BAD_KEY_LEN 2020-01-09 11:30:53 +08:00
ccp-crypto-des3.c crypto: ccp - switch from ablkcipher to skcipher 2019-11-17 09:02:45 +08:00
ccp-crypto-main.c crypto: ccp - switch from ablkcipher to skcipher 2019-11-17 09:02:45 +08:00
ccp-crypto-rsa.c crypto: ccp - Switch to SPDX license identifiers 2019-07-03 22:13:12 +08:00
ccp-crypto-sha.c crypto: ccp - use crypto_shash_tfm_digest() 2020-05-08 15:32:13 +10:00
ccp-crypto.h crypto: ccp - switch from ablkcipher to skcipher 2019-11-17 09:02:45 +08:00
ccp-debugfs.c crypto: ccp - Switch to SPDX license identifiers 2019-07-03 22:13:12 +08:00
ccp-dev-v3.c crypto: ccp - set max RSA modulus size for v3 platform devices as well 2019-12-11 16:36:55 +08:00
ccp-dev-v5.c crypto: ccp - Verify access to device registers before initializing 2019-10-26 02:09:59 +11:00
ccp-dev.c crypto: ccp - Change a message to reflect status instead of failure 2019-10-26 02:09:59 +11:00
ccp-dev.h crypto: ccp - Fix use of merged scatterlists 2020-07-03 14:18:34 +10:00
ccp-dmaengine.c crypto: ccp - fix uninitialized list head 2019-10-26 02:10:00 +11:00
ccp-ops.c crypto: ccp - Fix use of merged scatterlists 2020-07-03 14:18:34 +10:00
Kconfig crypto: ccp -- don't "select" CONFIG_DMADEVICES 2020-04-16 16:49:22 +10:00
Makefile crypto: ccp - add TEE support for Raven Ridge 2019-12-20 14:58:32 +08:00
psp-dev.c crypto: ccp - Cleanup sp_dev_master in psp_dev_destroy() 2020-03-12 23:00:12 +11:00
psp-dev.h crypto: ccp - add TEE support for Raven Ridge 2019-12-20 14:58:32 +08:00
sev-dev.c crypto: ccp - Fix sparse warnings in sev-dev 2020-06-15 17:38:53 +10:00
sev-dev.h crypto: ccp - move SEV vdata to a dedicated data structure 2019-12-20 14:58:32 +08:00
sp-dev.c crypto: ccp - Switch to SPDX license identifiers 2019-07-03 22:13:12 +08:00
sp-dev.h crypto: ccp - Cleanup sp_dev_master in psp_dev_destroy() 2020-03-12 23:00:12 +11:00
sp-pci.c crypto: ccp - Cleanup sp_dev_master in psp_dev_destroy() 2020-03-12 23:00:12 +11:00
sp-platform.c crypto: ccp - use devm_platform_ioremap_resource() to simplify code 2019-08-09 15:11:59 +10:00
tee-dev.c tee: amdtee: check TEE status during driver initialization 2020-01-04 13:49:51 +08:00
tee-dev.h crypto: ccp - provide in-kernel API to submit TEE commands 2019-12-20 14:58:32 +08:00