crypto: aes-ni - Fix cbc mode IV saving
authorHuang Ying <ying.huang@intel.com>
Thu, 18 Jun 2009 11:33:57 +0000 (19:33 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Thu, 18 Jun 2009 11:33:57 +0000 (19:33 +0800)
Original implementation of aesni_cbc_dec do not save IV if input
length % 4 == 0. This will make decryption of next block failed.

Signed-off-by: Huang Ying <ying.huang@intel.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
arch/x86/crypto/aesni-intel_asm.S

index caba996..eb0566e 100644 (file)
@@ -845,7 +845,7 @@ ENTRY(aesni_cbc_enc)
  */
 ENTRY(aesni_cbc_dec)
        cmp $16, LEN
-       jb .Lcbc_dec_ret
+       jb .Lcbc_dec_just_ret
        mov 480(KEYP), KLEN
        add $240, KEYP
        movups (IVP), IV
@@ -891,6 +891,7 @@ ENTRY(aesni_cbc_dec)
        add $16, OUTP
        cmp $16, LEN
        jge .Lcbc_dec_loop1
-       movups IV, (IVP)
 .Lcbc_dec_ret:
+       movups IV, (IVP)
+.Lcbc_dec_just_ret:
        ret