diff options
author | David S. Miller <davem@davemloft.net> | 2020-05-15 13:48:59 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2020-05-15 13:48:59 -0700 |
commit | da07f52d3caf6c24c6dbffb5500f379d819e04bd (patch) | |
tree | 836e51994554f1aeddeebb6cb6ee568944a467e7 /kernel/bpf/verifier.c | |
parent | Merge branch 'mptcp-fix-MP_JOIN-failure-handling' (diff) | |
parent | Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net (diff) | |
download | linux-dev-da07f52d3caf6c24c6dbffb5500f379d819e04bd.tar.xz linux-dev-da07f52d3caf6c24c6dbffb5500f379d819e04bd.zip |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
Move the bpf verifier trace check into the new switch statement in
HEAD.
Resolve the overlapping changes in hinic, where bug fixes overlap
the addition of VF support.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'kernel/bpf/verifier.c')
-rw-r--r-- | kernel/bpf/verifier.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c index 180933f6fba9..25b14ee0e26d 100644 --- a/kernel/bpf/verifier.c +++ b/kernel/bpf/verifier.c @@ -4389,7 +4389,9 @@ static void do_refine_retval_range(struct bpf_reg_state *regs, int ret_type, if (ret_type != RET_INTEGER || (func_id != BPF_FUNC_get_stack && - func_id != BPF_FUNC_probe_read_str)) + func_id != BPF_FUNC_probe_read_str && + func_id != BPF_FUNC_probe_read_kernel_str && + func_id != BPF_FUNC_probe_read_user_str)) return; ret_reg->smax_value = meta->msize_max_value; @@ -7113,9 +7115,23 @@ static int check_return_code(struct bpf_verifier_env *env) range = tnum_const(0); break; case BPF_PROG_TYPE_TRACING: - if (env->prog->expected_attach_type != BPF_TRACE_ITER) + switch (env->prog->expected_attach_type) { + case BPF_TRACE_FENTRY: + case BPF_TRACE_FEXIT: + range = tnum_const(0); + break; + case BPF_TRACE_ITER: + case BPF_TRACE_RAW_TP: + case BPF_MODIFY_RETURN: return 0; + default: + return -ENOTSUPP; + } break; + case BPF_PROG_TYPE_EXT: + /* freplace program can return anything as its return value + * depends on the to-be-replaced kernel func or bpf program. + */ default: return 0; } |