mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-04 01:49:36 +00:00
ARM: 7837/3: fix Thumb-2 bug in AES assembler code
Patch 638591c
enabled building the AES assembler code in Thumb2 mode.
However, this code used arithmetic involving PC rather than adr{l}
instructions to generate PC-relative references to the lookup tables,
and this needs to take into account the different PC offset when
running in Thumb mode.
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Acked-by: Nicolas Pitre <nico@linaro.org>
Cc: stable@vger.kernel.org
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
parent
c4a30c3b29
commit
40190c85f4
1 changed files with 3 additions and 3 deletions
|
@ -148,7 +148,7 @@ AES_Te:
|
||||||
@ const AES_KEY *key) {
|
@ const AES_KEY *key) {
|
||||||
.align 5
|
.align 5
|
||||||
ENTRY(AES_encrypt)
|
ENTRY(AES_encrypt)
|
||||||
sub r3,pc,#8 @ AES_encrypt
|
adr r3,AES_encrypt
|
||||||
stmdb sp!,{r1,r4-r12,lr}
|
stmdb sp!,{r1,r4-r12,lr}
|
||||||
mov r12,r0 @ inp
|
mov r12,r0 @ inp
|
||||||
mov r11,r2
|
mov r11,r2
|
||||||
|
@ -381,7 +381,7 @@ _armv4_AES_encrypt:
|
||||||
.align 5
|
.align 5
|
||||||
ENTRY(private_AES_set_encrypt_key)
|
ENTRY(private_AES_set_encrypt_key)
|
||||||
_armv4_AES_set_encrypt_key:
|
_armv4_AES_set_encrypt_key:
|
||||||
sub r3,pc,#8 @ AES_set_encrypt_key
|
adr r3,_armv4_AES_set_encrypt_key
|
||||||
teq r0,#0
|
teq r0,#0
|
||||||
moveq r0,#-1
|
moveq r0,#-1
|
||||||
beq .Labrt
|
beq .Labrt
|
||||||
|
@ -843,7 +843,7 @@ AES_Td:
|
||||||
@ const AES_KEY *key) {
|
@ const AES_KEY *key) {
|
||||||
.align 5
|
.align 5
|
||||||
ENTRY(AES_decrypt)
|
ENTRY(AES_decrypt)
|
||||||
sub r3,pc,#8 @ AES_decrypt
|
adr r3,AES_decrypt
|
||||||
stmdb sp!,{r1,r4-r12,lr}
|
stmdb sp!,{r1,r4-r12,lr}
|
||||||
mov r12,r0 @ inp
|
mov r12,r0 @ inp
|
||||||
mov r11,r2
|
mov r11,r2
|
||||||
|
|
Loading…
Reference in a new issue