The netvsc VF skb handler should make sure that skb is not shared. Similar logic already exists in bonding and team device drivers.
This does not happen in practice because the mlx device driver does not return shared skb's. Fixes: 0c195567a8f6 ("netvsc: transparent VF management") Signed-off-by: Stephen Hemminger <sthem...@microsoft.com> --- drivers/net/hyperv/netvsc_drv.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c index bb0fc1869bde..eb666908b0fa 100644 --- a/drivers/net/hyperv/netvsc_drv.c +++ b/drivers/net/hyperv/netvsc_drv.c @@ -2001,6 +2001,12 @@ static rx_handler_result_t netvsc_vf_handle_frame(struct sk_buff **pskb) = this_cpu_ptr(ndev_ctx->vf_stats); struct bpf_prog *xdp_prog; + skb = skb_share_check(skb, GFP_ATOMIC); + if (unlikely(!skb)) + return RX_HANDLER_CONSUMED; + + *pskb = skb; + skb->dev = ndev; xdp_prog = rcu_dereference(ndev->xdp_prog); -- 2.20.1