From: David S. Miller Date: Sat, 26 May 2018 23:46:15 +0000 (-0400) Subject: Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net X-Git-Tag: for-linus-20180616~56^2~131 X-Git-Url: https://git.kernel.dk/?a=commitdiff_plain;h=5b79c2af667c0e2684f2a6dbf6439074b78f490c;p=linux-2.6-block.git Merge git://git./linux/kernel/git/davem/net Lots of easy overlapping changes in the confict resolutions here. Signed-off-by: David S. Miller --- 5b79c2af667c0e2684f2a6dbf6439074b78f490c diff --cc MAINTAINERS index 032807a95558,ca4afd68530c..f492431b239b --- a/MAINTAINERS +++ b/MAINTAINERS @@@ -9019,8 -9025,8 +9024,8 @@@ W: http://www.mellanox.co Q: http://patchwork.ozlabs.org/project/netdev/list/ F: drivers/net/ethernet/mellanox/mlx5/core/en_* -MELLANOX ETHERNET INNOVA DRIVER +MELLANOX ETHERNET INNOVA DRIVERS - M: Boris Pismenny + R: Boris Pismenny L: netdev@vger.kernel.org S: Supported W: http://www.mellanox.com diff --cc kernel/bpf/verifier.c index 967cacf286ea,1904e814f282..1fd9667b29f1 --- a/kernel/bpf/verifier.c +++ b/kernel/bpf/verifier.c @@@ -2350,23 -2380,29 +2397,46 @@@ static int prepare_func_exit(struct bpf return 0; } +static void do_refine_retval_range(struct bpf_reg_state *regs, int ret_type, + int func_id, + struct bpf_call_arg_meta *meta) +{ + struct bpf_reg_state *ret_reg = ®s[BPF_REG_0]; + + if (ret_type != RET_INTEGER || + (func_id != BPF_FUNC_get_stack && + func_id != BPF_FUNC_probe_read_str)) + return; + + ret_reg->smax_value = meta->msize_smax_value; + ret_reg->umax_value = meta->msize_umax_value; + __reg_deduce_bounds(ret_reg); + __reg_bound_offset(ret_reg); +} + + static int + record_func_map(struct bpf_verifier_env *env, struct bpf_call_arg_meta *meta, + int func_id, int insn_idx) + { + struct bpf_insn_aux_data *aux = &env->insn_aux_data[insn_idx]; + + if (func_id != BPF_FUNC_tail_call && + func_id != BPF_FUNC_map_lookup_elem) + return 0; + if (meta->map_ptr == NULL) { + verbose(env, "kernel subsystem misconfigured verifier\n"); + return -EINVAL; + } + + if (!BPF_MAP_PTR(aux->map_state)) + bpf_map_ptr_store(aux, meta->map_ptr, + meta->map_ptr->unpriv_array); + else if (BPF_MAP_PTR(aux->map_state) != meta->map_ptr) + bpf_map_ptr_store(aux, BPF_MAP_PTR_POISON, + meta->map_ptr->unpriv_array); + return 0; + } + static int check_helper_call(struct bpf_verifier_env *env, int func_id, int insn_idx) { const struct bpf_func_proto *fn = NULL; diff --cc net/ipv4/fib_frontend.c index 045c43a27c12,e66172aaf241..b69e2824c761 --- a/net/ipv4/fib_frontend.c +++ b/net/ipv4/fib_frontend.c @@@ -647,9 -649,7 +647,10 @@@ const struct nla_policy rtm_ipv4_policy [RTA_ENCAP] = { .type = NLA_NESTED }, [RTA_UID] = { .type = NLA_U32 }, [RTA_MARK] = { .type = NLA_U32 }, + [RTA_TABLE] = { .type = NLA_U32 }, + [RTA_IP_PROTO] = { .type = NLA_U8 }, + [RTA_SPORT] = { .type = NLA_U16 }, + [RTA_DPORT] = { .type = NLA_U16 }, }; static int rtm_to_fib_config(struct net *net, struct sk_buff *skb,