diff options
author | David S. Miller <davem@davemloft.net> | 2018-03-29 21:49:19 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-03-29 21:49:19 -0400 |
commit | 74957cbfb7eabe7639a22bd58f45a99bde42fd0c (patch) | |
tree | 1cd16acb999bea8de6e8b008c1a4819da851b6c3 /drivers/net | |
parent | d65026c6c62e7d9616c8ceb5a53b68bcdc050525 (diff) | |
parent | e8a4796ee2954db9f7e9b52e5fbc66ef876752f6 (diff) | |
download | linux-stable-74957cbfb7eabe7639a22bd58f45a99bde42fd0c.tar.gz linux-stable-74957cbfb7eabe7639a22bd58f45a99bde42fd0c.tar.bz2 linux-stable-74957cbfb7eabe7639a22bd58f45a99bde42fd0c.zip |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf
Daniel Borkman says:
====================
pull-request: bpf 2018-03-29
The following pull-request contains BPF updates for your *net* tree.
The main changes are:
1) Fix nfp to properly check max insn count while emitting
instructions in the JIT which was wrongly comparing bytes
against number of instructions before, from Jakub.
2) Fix for bpftool to avoid usage of hex numbers in JSON
output since JSON doesn't accept hex numbers with 0x
prefix, also from Jakub.
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/ethernet/netronome/nfp/bpf/jit.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/net/ethernet/netronome/nfp/bpf/jit.c b/drivers/net/ethernet/netronome/nfp/bpf/jit.c index 56451edf01c2..ecd7c33baf3c 100644 --- a/drivers/net/ethernet/netronome/nfp/bpf/jit.c +++ b/drivers/net/ethernet/netronome/nfp/bpf/jit.c @@ -74,7 +74,9 @@ nfp_meta_has_prev(struct nfp_prog *nfp_prog, struct nfp_insn_meta *meta) static void nfp_prog_push(struct nfp_prog *nfp_prog, u64 insn) { - if (nfp_prog->__prog_alloc_len == nfp_prog->prog_len) { + if (nfp_prog->__prog_alloc_len / sizeof(u64) == nfp_prog->prog_len) { + pr_warn("instruction limit reached (%u NFP instructions)\n", + nfp_prog->prog_len); nfp_prog->error = -ENOSPC; return; } @@ -2463,6 +2465,8 @@ static int nfp_translate(struct nfp_prog *nfp_prog) err = cb(nfp_prog, meta); if (err) return err; + if (nfp_prog->error) + return nfp_prog->error; nfp_prog->n_translated++; } |