Re: [PATCH] arm64: bpf: fix buffer pointer

From: Shi, Yang
Date: Wed Nov 18 2015 - 17:59:27 EST


On 11/18/2015 1:41 PM, Z Lim wrote:
On Wed, Nov 18, 2015 at 1:07 PM, Shi, Yang <yang.shi@xxxxxxxxxx> wrote:
On 11/18/2015 12:56 AM, Zi Shen Lim wrote:
emit_a64_mov_i64(r3, size, ctx);
- emit(A64_ADD_I(1, r4, fp, MAX_BPF_STACK), ctx);
+ emit(A64_SUB_I(1, r4, fp, STACK_SIZE), ctx);


Should not it sub MAX_BPF_STACK?

No, if it's at (BPF_FP - MAX_BPF_STACK), we'll be writing into the BPF
stack area, which should only be used by the BPF program.

If you sub STACK_SIZE here, the buffer pointer will point to bottom of the
reserved area.

Yes, that's the idea. The buffer is allocated in here. Right now we're
using this "reserved" space for this buffer only.

OK, I see. The buffer grows from low to high.

Thanks for the elaboration.

Acked-by: Yang Shi <yang.shi@xxxxxxxxxx>

Yang



You stack layout change also shows this:

+ * +-----+ <= (BPF_FP - MAX_BPF_STACK)
+ * |RSVD | JIT scratchpad
+ * current A64_SP => +-----+ <= (BPF_FP - STACK_SIZE)

Yes, this diagram reflects the code and intention.


Thanks for reviewing, we definitely need more of these :)


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/