crypto: arm64/aes - avoid literals for cross-module symbol references
authorArd Biesheuvel <ard.biesheuvel@linaro.org>
Sat, 28 Jan 2017 23:25:36 +0000 (23:25 +0000)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 3 Feb 2017 10:16:20 +0000 (18:16 +0800)
Using simple adrp/add pairs to refer to the AES lookup tables exposed by
the generic AES driver (which could be loaded far away from this driver
when KASLR is in effect) was unreliable at module load time before commit
41c066f2c4d4 ("arm64: assembler: make adr_l work in modules under KASLR"),
which is why the AES code used literals instead.

So now we can get rid of the literals, and switch to the adr_l macro.

Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
arch/arm64/crypto/aes-cipher-core.S

index 37590ab..cd58c61 100644 (file)
@@ -89,8 +89,8 @@ CPU_BE(       rev             w8, w8          )
        eor             w7, w7, w11
        eor             w8, w8, w12
 
-       ldr             tt, =\ttab
-       ldr             lt, =\ltab
+       adr_l           tt, \ttab
+       adr_l           lt, \ltab
 
        tbnz            rounds, #1, 1f
 
@@ -111,9 +111,6 @@ CPU_BE(     rev             w8, w8          )
        stp             w5, w6, [out]
        stp             w7, w8, [out, #8]
        ret
-
-       .align          4
-       .ltorg
        .endm
 
        .align          5