Commit dcf7b482 authored by Daniel Axtens's avatar Daniel Axtens Committed by Herbert Xu

crypto: vmx - fix copy-paste error in CTR mode

The original assembly imported from OpenSSL has two copy-paste
errors in handling CTR mode. When dealing with a 2 or 3 block tail,
the code branches to the CBC decryption exit path, rather than to
the CTR exit path.

This leads to corruption of the IV, which leads to subsequent blocks
being corrupted.

This can be detected with libkcapi test suite, which is available at
https://github.com/smuellerDD/libkcapiReported-by: default avatarOndrej Mosnáček <omosnacek@gmail.com>
Fixes: 5c380d62 ("crypto: vmx - Add support for VMS instructions by ASM")
Cc: stable@vger.kernel.org
Signed-off-by: default avatarDaniel Axtens <dja@axtens.net>
Tested-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Tested-by: default avatarOndrej Mosnacek <omosnacek@gmail.com>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent 5db46ac2
...@@ -1854,7 +1854,7 @@ Lctr32_enc8x_three: ...@@ -1854,7 +1854,7 @@ Lctr32_enc8x_three:
stvx_u $out1,$x10,$out stvx_u $out1,$x10,$out
stvx_u $out2,$x20,$out stvx_u $out2,$x20,$out
addi $out,$out,0x30 addi $out,$out,0x30
b Lcbc_dec8x_done b Lctr32_enc8x_done
.align 5 .align 5
Lctr32_enc8x_two: Lctr32_enc8x_two:
...@@ -1866,7 +1866,7 @@ Lctr32_enc8x_two: ...@@ -1866,7 +1866,7 @@ Lctr32_enc8x_two:
stvx_u $out0,$x00,$out stvx_u $out0,$x00,$out
stvx_u $out1,$x10,$out stvx_u $out1,$x10,$out
addi $out,$out,0x20 addi $out,$out,0x20
b Lcbc_dec8x_done b Lctr32_enc8x_done
.align 5 .align 5
Lctr32_enc8x_one: Lctr32_enc8x_one:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment