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.hu...@intel.com>

---
 arch/x86/crypto/aesni-intel_asm.S |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

--- a/arch/x86/crypto/aesni-intel_asm.S
+++ b/arch/x86/crypto/aesni-intel_asm.S
@@ -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


--
To unsubscribe from this list: send the line "unsubscribe linux-crypto" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to