Re: [PATCH] arm64/bpf: use movn/movk/movk sequence to generate kernel addresses

From: Will Deacon
Date: Tue Nov 27 2018 - 13:21:48 EST


Hi Ard,

On Fri, Nov 23, 2018 at 06:29:02PM +0100, Ard Biesheuvel wrote:
> On arm64, all executable code is guaranteed to reside in the vmalloc
> space (or the module space), and so jump targets will only use 48
> bits at most, and the remaining bits are guaranteed to be 0x1.
>
> This means we can generate an immediate jump address using a sequence
> of one MOVN (move wide negated) and two MOVK instructions, where the
> first one sets the lower 16 bits but also sets all top bits to 0x1.
>
> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@xxxxxxxxxx>
> ---

Acked-by: Will Deacon <will.deacon@xxxxxxx>

Denial, Alexei, shall I take this via arm64, or would you rather take
it via davem?

Cheers,

Will