nfp: bpf: don't do ld/shifts combination if shifts are jump destination
authorJiong Wang <jiong.wang@netronome.com>
Fri, 1 Dec 2017 05:32:53 +0000 (21:32 -0800)
committerDaniel Borkmann <daniel@iogearbox.net>
Fri, 1 Dec 2017 19:59:20 +0000 (20:59 +0100)
If any of the shift insns in the ld/shift sequence is jump destination,
don't do combination.

Signed-off-by: Jiong Wang <jiong.wang@netronome.com>
Reviewed-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
drivers/net/ethernet/netronome/nfp/bpf/jit.c

index f2317b76422204694b68f70b678e72419b8976c4..54915a3b8a7e947c190003346094829b47c46889 100644 (file)
@@ -2181,6 +2181,10 @@ static void nfp_bpf_opt_ld_shift(struct nfp_prog *nfp_prog)
                if (next1.imm != 0x20 || next2.imm != 0x20)
                        continue;
 
+               if (meta2->flags & FLAG_INSN_IS_JUMP_DST ||
+                   meta3->flags & FLAG_INSN_IS_JUMP_DST)
+                       continue;
+
                meta2->skip = true;
                meta3->skip = true;
        }