]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
crypto: atmel-aes - Reset the controller before each use
authorRomain Izard <romain.izard.pro@gmail.com>
Tue, 31 Oct 2017 15:25:24 +0000 (16:25 +0100)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 3 Nov 2017 14:11:26 +0000 (22:11 +0800)
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>
drivers/crypto/atmel-aes.c

index 3f7b0966163cf34b1f5b9dc49959e485f2997b7e..0b49b6e9869a9a04ec39e4ac065457d6fda861ec 100644 (file)
                                 AES_FLAGS_ENCRYPT |            \
                                 AES_FLAGS_GTAGEN)
 
-#define AES_FLAGS_INIT         BIT(2)
 #define AES_FLAGS_BUSY         BIT(3)
 #define AES_FLAGS_DUMP_REG     BIT(4)
 #define AES_FLAGS_OWN_SHA      BIT(5)
 
-#define AES_FLAGS_PERSISTENT   (AES_FLAGS_INIT | AES_FLAGS_BUSY)
+#define AES_FLAGS_PERSISTENT   AES_FLAGS_BUSY
 
 #define ATMEL_AES_QUEUE_LENGTH 50
 
@@ -451,11 +450,8 @@ static int atmel_aes_hw_init(struct atmel_aes_dev *dd)
        if (err)
                return err;
 
-       if (!(dd->flags & AES_FLAGS_INIT)) {
-               atmel_aes_write(dd, AES_CR, AES_CR_SWRST);
-               atmel_aes_write(dd, AES_MR, 0xE << AES_MR_CKEY_OFFSET);
-               dd->flags |= AES_FLAGS_INIT;
-       }
+       atmel_aes_write(dd, AES_CR, AES_CR_SWRST);
+       atmel_aes_write(dd, AES_MR, 0xE << AES_MR_CKEY_OFFSET);
 
        return 0;
 }