From: David S. Miller Date: Fri, 15 May 2020 20:48:59 +0000 (-0700) Subject: Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=da07f52d3caf6c24c6dbffb5500f379d819e04bd;p=linux.git Merge git://git./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 --- da07f52d3caf6c24c6dbffb5500f379d819e04bd diff --cc drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c index 8c8d95aa1dfdc,d97c320a2dc03..5fbaa51b38bce --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c @@@ -367,13 -335,9 +367,13 @@@ static u32 run_xdp(struct dpaa2_eth_pri break; case XDP_REDIRECT: dma_unmap_page(priv->net_dev->dev.parent, addr, - DPAA2_ETH_RX_BUF_SIZE, DMA_BIDIRECTIONAL); + priv->rx_buf_size, DMA_BIDIRECTIONAL); ch->buf_count--; + + /* Allow redirect use of full headroom */ xdp.data_hard_start = vaddr; + xdp.frame_sz = DPAA2_ETH_RX_BUF_RAW_SIZE; + err = xdp_do_redirect(priv->net_dev, &xdp, xdp_prog); if (unlikely(err)) ch->stats.xdp_drop++; diff --cc drivers/net/ethernet/huawei/hinic/hinic_hw_mgmt.c index eef855f11a015,992908e6eebf6..c33eb11470557 --- a/drivers/net/ethernet/huawei/hinic/hinic_hw_mgmt.c +++ b/drivers/net/ethernet/huawei/hinic/hinic_hw_mgmt.c @@@ -353,13 -358,12 +358,16 @@@ int hinic_msg_to_mgmt(struct hinic_pf_t return -EINVAL; } + if (cmd == HINIC_PORT_CMD_SET_FUNC_STATE) + timeout = SET_FUNC_PORT_MGMT_TIMEOUT; + - return msg_to_mgmt_sync(pf_to_mgmt, mod, cmd, buf_in, in_size, + if (HINIC_IS_VF(hwif)) + return hinic_mbox_to_pf(pf_to_mgmt->hwdev, mod, cmd, buf_in, + in_size, buf_out, out_size, 0); + else + return msg_to_mgmt_sync(pf_to_mgmt, mod, cmd, buf_in, in_size, buf_out, out_size, MGMT_DIRECT_SEND, - MSG_NOT_RESP); + MSG_NOT_RESP, timeout); } /** diff --cc drivers/net/ethernet/huawei/hinic/hinic_main.c index e3ff119fe3413,63b92f6cc856b..c8ab129a7ae80 --- a/drivers/net/ethernet/huawei/hinic/hinic_main.c +++ b/drivers/net/ethernet/huawei/hinic/hinic_main.c @@@ -502,23 -496,9 +501,12 @@@ int hinic_close(struct net_device *netd up(&nic_dev->mgmt_lock); + if (!HINIC_IS_VF(nic_dev->hwdev->hwif)) + hinic_notify_all_vfs_link_changed(nic_dev->hwdev, 0); + - err = hinic_port_set_func_state(nic_dev, HINIC_FUNC_PORT_DISABLE); - if (err) { - netif_err(nic_dev, drv, netdev, - "Failed to set func port state\n"); - nic_dev->flags |= (flags & HINIC_INTF_UP); - return err; - } + hinic_port_set_state(nic_dev, HINIC_PORT_DISABLE); - err = hinic_port_set_state(nic_dev, HINIC_PORT_DISABLE); - if (err) { - netif_err(nic_dev, drv, netdev, "Failed to set port state\n"); - nic_dev->flags |= (flags & HINIC_INTF_UP); - return err; - } + hinic_port_set_func_state(nic_dev, HINIC_FUNC_PORT_DISABLE); if (nic_dev->flags & HINIC_RSS_ENABLE) { hinic_rss_deinit(nic_dev); diff --cc kernel/bpf/verifier.c index 180933f6fba9d,8d7ee40e27484..25b14ee0e26d3 --- a/kernel/bpf/verifier.c +++ b/kernel/bpf/verifier.c @@@ -7113,9 -7062,22 +7115,23 @@@ static int check_return_code(struct bpf 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; } diff --cc tools/testing/selftests/bpf/progs/test_overhead.c index 450bf819beac1,abb7344b531f4..42403d088abc9 --- a/tools/testing/selftests/bpf/progs/test_overhead.c +++ b/tools/testing/selftests/bpf/progs/test_overhead.c @@@ -36,13 -36,7 +36,13 @@@ int BPF_PROG(prog4, struct task_struct SEC("fexit/__set_task_comm") int BPF_PROG(prog5, struct task_struct *tsk, const char *buf, bool exec) { - return !tsk; + return 0; } +SEC("fmod_ret/__set_task_comm") +int BPF_PROG(prog6, struct task_struct *tsk, const char *buf, bool exec) +{ + return !tsk; +} + char _license[] SEC("license") = "GPL";