summaryrefslogtreecommitdiff
path: root/drivers/crypto/geode-aes.h
diff options
context:
space:
mode:
authorEric Biggers <ebiggers@google.com>2019-10-10 21:51:32 -0700
committerHerbert Xu <herbert@gondor.apana.org.au>2019-10-23 19:46:56 +1100
commit4549f7e5aa27ffc2cba63b5db8842a3b486f5688 (patch)
tree576981916d31b365891a522c538b320d478892d6 /drivers/crypto/geode-aes.h
parente53619c840ba449f3f671d6b8ddc2341bdfa1a56 (diff)
crypto: geode-aes - convert to skcipher API and make thread-safe
The geode AES driver is heavily broken because it stores per-request state in the transform context. So it will crash or produce the wrong result if used by any of the many places in the kernel that issue concurrent requests for the same transform object. This driver is also implemented using the deprecated blkcipher API, which makes it difficult to fix, and puts it among the drivers preventing that API from being removed. Convert this driver to use the skcipher API, and change it to not store per-request state in the transform context. Fixes: 9fe757b0cfce ("[PATCH] crypto: Add support for the Geode LX AES hardware") Signed-off-by: Eric Biggers <ebiggers@google.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'drivers/crypto/geode-aes.h')
-rw-r--r--drivers/crypto/geode-aes.h15
1 files changed, 2 insertions, 13 deletions
diff --git a/drivers/crypto/geode-aes.h b/drivers/crypto/geode-aes.h
index f8a86898ac22..6d0a0cdc7647 100644
--- a/drivers/crypto/geode-aes.h
+++ b/drivers/crypto/geode-aes.h
@@ -46,21 +46,10 @@
#define AES_OP_TIMEOUT 0x50000
-struct geode_aes_op {
-
- void *src;
- void *dst;
-
- u32 mode;
- u32 dir;
- u32 flags;
- int len;
-
+struct geode_aes_tfm_ctx {
u8 key[AES_KEYSIZE_128];
- u8 *iv;
-
union {
- struct crypto_sync_skcipher *blk;
+ struct crypto_skcipher *skcipher;
struct crypto_cipher *cip;
} fallback;
u32 keylen;