Hi,

AES_REG_IV() registers should be read back at the end of  encryption or decryption operations and the values returned to the caller.

Add the code and helper to do just that.

diff --git a/drivers/crypto/omap-aes.c b/drivers/crypto/omap-aes.c                                                
index 49bd56f..744885b 100644                                                                                     
--- a/drivers/crypto/omap-aes.c                                                                                   
+++ b/drivers/crypto/omap-aes.c                                                                                   
@@ -97,6 +97,13 @@ static void omap_aes_write_n(struct omap_aes_dev *dd, u32 offset,
                omap_aes_write(dd, offset, *value);                                                               
 }                                                                                                                
                                                                                                                  
+static void omap_aes_read_n(struct omap_aes_dev *dd, u32 offset,                                                 
+                                       u32 *value, int count)                                                    
+{                                                                                                                
+       for (; count--; value++, offset += 4)                                                                     
+               *value = omap_aes_read(dd, offset);                                                               
+}                                                                                                                
+                                                                                                                 
 static int omap_aes_hw_init(struct omap_aes_dev *dd)                                                             
 {                                                                                                                
        int err;                                                                                                  
@@ -389,6 +396,9 @@ static void omap_aes_finish_req(struct omap_aes_dev *dd, int err)
                                                                                                                  
        pr_debug("err: %d\n", err);                                                                               
                                                                                                                  
+       if ((dd->flags & (FLAGS_CBC | FLAGS_CTR)) && dd->req->info)                                               
+               omap_aes_read_n(dd, AES_REG_IV(dd, 0), dd->req->info, 4);                                         
+                                                                                                                 
        crypto_finalize_cipher_request(dd->engine, req, err);