[patch 075/108] crypto: aes-ni - Fix cbc mode IV saving

Greg KH
2009-07-01T01:08:41Z

[-- Attachment #1: crypto-aes-ni-fix-cbc-mode-iv-saving.patch --]
[-- Type: text/plain, Size: 1031 bytes --]

2.6.30-stable review patch. If anyone has any objections, please let us know.

------------------

From: Huang Ying <ying.huang@intel.com>

commit e6efaa025384f86a18814a6b9f4e5d54484ab9ff upstream.

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
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