mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-24 09:50:04 +00:00
crypto: aesni-intel - fix unaligned cbc decrypt for x86-32
The 32 bit variant of cbc(aes) decrypt is using instructions requiring 128 bit aligned memory locations but fails to ensure this constraint in the code. Fix this by loading the data into intermediate registers with load unaligned instructions. This fixes reported general protection faults related to aesni. References: https://bugzilla.kernel.org/show_bug.cgi?id=43223 Reported-by: Daniel <garkein@mailueberfall.de> Cc: stable@kernel.org [v2.6.39+] Signed-off-by: Mathias Krause <minipli@googlemail.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
121daad8fd
commit
7c8d51848a
1 changed files with 4 additions and 2 deletions
|
@ -2460,10 +2460,12 @@ ENTRY(aesni_cbc_dec)
|
||||||
pxor IN3, STATE4
|
pxor IN3, STATE4
|
||||||
movaps IN4, IV
|
movaps IN4, IV
|
||||||
#else
|
#else
|
||||||
pxor (INP), STATE2
|
|
||||||
pxor 0x10(INP), STATE3
|
|
||||||
pxor IN1, STATE4
|
pxor IN1, STATE4
|
||||||
movaps IN2, IV
|
movaps IN2, IV
|
||||||
|
movups (INP), IN1
|
||||||
|
pxor IN1, STATE2
|
||||||
|
movups 0x10(INP), IN2
|
||||||
|
pxor IN2, STATE3
|
||||||
#endif
|
#endif
|
||||||
movups STATE1, (OUTP)
|
movups STATE1, (OUTP)
|
||||||
movups STATE2, 0x10(OUTP)
|
movups STATE2, 0x10(OUTP)
|
||||||
|
|
Loading…
Reference in a new issue