aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRomain Izard <romain.izard.pro@gmail.com>2017-10-31 11:25:24 -0400
committerHerbert Xu <herbert@gondor.apana.org.au>2017-11-03 10:11:26 -0400
commit7a373fd74a8d1c4882e0236cc38345cec1393505 (patch)
treea9b3e7117c27d2dd7aaf7a744f0dc9821327c660
parent91308019ecb46047b81d3c769cf5bf6b129ddf02 (diff)
crypto: atmel-aes - Reset the controller before each use
When using the rfc4543(gcm(aes))) mode, the registers of the hardware engine are not empty after use. If the engine is not reset before its next use, the following results will be invalid. Always reset the hardware engine. Signed-off-by: Romain Izard <romain.izard.pro@gmail.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
-rw-r--r--drivers/crypto/atmel-aes.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/drivers/crypto/atmel-aes.c b/drivers/crypto/atmel-aes.c
index 3f7b0966163c..0b49b6e9869a 100644
--- a/drivers/crypto/atmel-aes.c
+++ b/drivers/crypto/atmel-aes.c
@@ -77,12 +77,11 @@
77 AES_FLAGS_ENCRYPT | \ 77 AES_FLAGS_ENCRYPT | \
78 AES_FLAGS_GTAGEN) 78 AES_FLAGS_GTAGEN)
79 79
80#define AES_FLAGS_INIT BIT(2)
81#define AES_FLAGS_BUSY BIT(3) 80#define AES_FLAGS_BUSY BIT(3)
82#define AES_FLAGS_DUMP_REG BIT(4) 81#define AES_FLAGS_DUMP_REG BIT(4)
83#define AES_FLAGS_OWN_SHA BIT(5) 82#define AES_FLAGS_OWN_SHA BIT(5)
84 83
85#define AES_FLAGS_PERSISTENT (AES_FLAGS_INIT | AES_FLAGS_BUSY) 84#define AES_FLAGS_PERSISTENT AES_FLAGS_BUSY
86 85
87#define ATMEL_AES_QUEUE_LENGTH 50 86#define ATMEL_AES_QUEUE_LENGTH 50
88 87
@@ -451,11 +450,8 @@ static int atmel_aes_hw_init(struct atmel_aes_dev *dd)
451 if (err) 450 if (err)
452 return err; 451 return err;
453 452
454 if (!(dd->flags & AES_FLAGS_INIT)) { 453 atmel_aes_write(dd, AES_CR, AES_CR_SWRST);
455 atmel_aes_write(dd, AES_CR, AES_CR_SWRST); 454 atmel_aes_write(dd, AES_MR, 0xE << AES_MR_CKEY_OFFSET);
456 atmel_aes_write(dd, AES_MR, 0xE << AES_MR_CKEY_OFFSET);
457 dd->flags |= AES_FLAGS_INIT;
458 }
459 455
460 return 0; 456 return 0;
461} 457}