[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <acd52bd9-eef1-fd0b-f81d-83b653535839@iogearbox.net>
Date: Sat, 16 Mar 2019 01:30:49 +0100
From: Daniel Borkmann <daniel@...earbox.net>
To: "Naveen N. Rao" <naveen.n.rao@...ux.vnet.ibm.com>,
Alexei Starovoitov <alexei.starovoitov@...il.com>,
Yauheni Kaliuta <yauheni.kaliuta@...hat.com>
Cc: Michael Ellerman <mpe@...erman.id.au>,
Segher Boessenkool <segher@...nel.crashing.org>,
linuxppc-dev@...ts.ozlabs.org, netdev@...r.kernel.org,
bpf@...r.kernel.org
Subject: Re: [PATCH] powerpc: bpf: Fix generation of load/store DW
instructions
On 03/15/2019 03:51 PM, Naveen N. Rao wrote:
> Yauheni Kaliuta pointed out that PTR_TO_STACK store/load verifier test
> was failing on powerpc64 BE, and rightfully indicated that the PPC_LD()
> macro is not masking away the last two bits of the offset per the ISA,
> resulting in the generation of 'lwa' instruction instead of the intended
> 'ld' instruction.
>
> Segher also pointed out that we can't simply mask away the last two bits
> as that will result in loading/storing from/to a memory location that
> was not intended.
>
> This patch addresses this by using ldx/stdx if the offset is not
> word-aligned. We load the offset into a temporary register (TMP_REG_2)
> and use that as the index register in a subsequent ldx/stdx. We fix
> PPC_LD() macro to mask off the last two bits, but enhance PPC_BPF_LL()
> and PPC_BPF_STL() to factor in the offset value and generate the proper
> instruction sequence. We also convert all existing users of PPC_LD() and
> PPC_STD() to use these macros. All existing uses of these macros have
> been audited to ensure that TMP_REG_2 can be clobbered.
>
> Fixes: 156d0e290e96 ("powerpc/ebpf/jit: Implement JIT compiler for extended BPF")
> Cc: stable@...r.kernel.org # v4.9+
>
> Reported-by: Yauheni Kaliuta <yauheni.kaliuta@...hat.com>
> Signed-off-by: Naveen N. Rao <naveen.n.rao@...ux.vnet.ibm.com>
Applied, thanks!
Powered by blists - more mailing lists