From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jiong Wang Subject: [PATH bpf-next 03/13] bpf: JIT blinds support JMP32 Date: Wed, 19 Dec 2018 17:44:10 -0500 Message-ID: <1545259460-13376-4-git-send-email-jiong.wang@netronome.com> References: <1545259460-13376-1-git-send-email-jiong.wang@netronome.com> Cc: netdev@vger.kernel.org, oss-drivers@netronome.com, Jiong Wang To: ast@kernel.org, daniel@iogearbox.net Return-path: Received: from mail-wm1-f68.google.com ([209.85.128.68]:37493 "EHLO mail-wm1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728170AbeLSWok (ORCPT ); Wed, 19 Dec 2018 17:44:40 -0500 Received: by mail-wm1-f68.google.com with SMTP id g67so102883wmd.2 for ; Wed, 19 Dec 2018 14:44:38 -0800 (PST) In-Reply-To: <1545259460-13376-1-git-send-email-jiong.wang@netronome.com> Sender: netdev-owner@vger.kernel.org List-ID: JIT blinds is building eBPF JMP insn directly, and is transforming BPF_K into BPF_X. Update the code to be aware of JMP32 Signed-off-by: Jiong Wang --- kernel/bpf/core.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/kernel/bpf/core.c b/kernel/bpf/core.c index 33609f3..0252e28 100644 --- a/kernel/bpf/core.c +++ b/kernel/bpf/core.c @@ -902,7 +902,13 @@ static int bpf_jit_blind_insn(const struct bpf_insn *from, off -= 2; *to++ = BPF_ALU64_IMM(BPF_MOV, BPF_REG_AX, imm_rnd ^ from->imm); *to++ = BPF_ALU64_IMM(BPF_XOR, BPF_REG_AX, imm_rnd); - *to++ = BPF_JMP_REG(from->code, from->dst_reg, BPF_REG_AX, off); + *to = BPF_JMP_REG(from->code, from->dst_reg, BPF_REG_AX, off); + if (from->src_reg) + /* NOTE: BPF_K has been transformed into BPF_X, + * mark imm instead of src_reg + */ + to->imm |= BPF_JMP_SUBOP_32BIT; + to++; break; case BPF_LD | BPF_IMM | BPF_DW: -- 2.7.4