|
Message-ID: <CAKv+Gu9c=EaHg-hiu48ABQf01yVAK-APjP4skG7KVZD_3K4LZg@mail.gmail.com> Date: Mon, 4 Sep 2017 20:09:27 +0100 From: Ard Biesheuvel <ard.biesheuvel@...aro.org> To: Nicolas Pitre <nicolas.pitre@...aro.org> Cc: "linux-arm-kernel@...ts.infradead.org" <linux-arm-kernel@...ts.infradead.org>, Kernel Hardening <kernel-hardening@...ts.openwall.com>, Arnd Bergmann <arnd@...db.de>, Russell King <linux@...linux.org.uk>, Kees Cook <keescook@...omium.org>, Thomas Garnier <thgarnie@...gle.com>, Marc Zyngier <marc.zyngier@....com>, Mark Rutland <mark.rutland@....com>, Tony Lindgren <tony@...mide.com>, Matt Fleming <matt@...eblueprint.co.uk>, Dave Martin <dave.martin@....com> Subject: Re: [PATCH v2 17/29] ARM: kernel: use relative phys-to-virt patch tables On 4 September 2017 at 19:03, Nicolas Pitre <nicolas.pitre@...aro.org> wrote: > On Sun, 3 Sep 2017, Ard Biesheuvel wrote: > >> Replace the contents of the __pv_table entries with relative references >> so that we don't have to relocate them at runtime when running the KASLR >> kernel. This ensures these quantities are invariant under runtime >> relocation, which makes any cache maintenance after runtime relocation >> unnecessary. >> >> Cc: Russell King <linux@...linux.org.uk> >> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@...aro.org> >> --- >> arch/arm/include/asm/memory.h | 6 +++--- >> arch/arm/kernel/head.S | 21 ++++++++++---------- >> 2 files changed, 13 insertions(+), 14 deletions(-) >> >> diff --git a/arch/arm/include/asm/memory.h b/arch/arm/include/asm/memory.h >> index 1f54e4e98c1e..47a984e3a244 100644 >> --- a/arch/arm/include/asm/memory.h >> +++ b/arch/arm/include/asm/memory.h >> @@ -195,7 +195,7 @@ extern const void *__pv_table_begin, *__pv_table_end; >> __asm__("@ __pv_stub\n" \ >> "1: " instr " %0, %1, %2\n" \ >> " .pushsection .pv_table,\"a\"\n" \ >> - " .long 1b\n" \ >> + " .long 1b - .\n" \ >> " .popsection\n" \ > > [...] > >> --- a/arch/arm/kernel/head.S >> +++ b/arch/arm/kernel/head.S >> @@ -612,22 +611,22 @@ __fixup_a_pv_table: >> orr r6, r6, r7, lsl #12 >> orr r6, #0x4000 >> b 2f >> -1: add r7, r3 >> - ldrh ip, [r7, #2] >> +1: add r7, r4 >> + ldrh ip, [r7, #-2] > > Please use "ldrh ip, [r7, #(-4 + 2)]" so the -4 offset is clearly > spelled out. The #-2 gave me a pause of confusion. > >> ARM_BE8(rev16 ip, ip) >> tst ip, #0x4000 >> and ip, #0x8f00 >> orrne ip, r6 @ mask in offset bits 31-24 >> orreq ip, r0 @ mask in offset bits 7-0 >> ARM_BE8(rev16 ip, ip) >> - strh ip, [r7, #2] >> + strh ip, [r7, #-2] > > Ditto here. > >> bne 2f >> - ldrh ip, [r7] >> + ldrh ip, [r7, #-4] > > And to be clear, here I'd use "#(-4 + 0)" to be explicit. > >> ARM_BE8(rev16 ip, ip) >> bic ip, #0x20 >> orr ip, ip, r0, lsr #16 >> ARM_BE8(rev16 ip, ip) >> - strh ip, [r7] >> + strh ip, [r7, #-4] > > And so here. > OK > > With that: > > Reviewed-by: Nicolas Pitre <nico@...aro.org> Thanks.
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.