• Haiyang Zhang's avatar
    hv_netvsc: Fix XDP refcnt for synthetic and VF NICs · 184367dc
    Haiyang Zhang authored
    The caller of XDP_SETUP_PROG has already incremented refcnt in
    __bpf_prog_get(), so drivers should only increment refcnt by
    num_queues - 1.
    
    To fix the issue, update netvsc_xdp_set() to add the correct number
    to refcnt.
    
    Hold a refcnt in netvsc_xdp_set()’s other caller, netvsc_attach().
    
    And, do the same in netvsc_vf_setxdp(). Otherwise, every time when VF is
    removed and added from the host side, the refcnt will be decreased by one,
    which may cause page fault when unloading xdp program.
    
    Fixes: 351e1581 ("hv_netvsc: Add XDP support")
    Signed-off-by: default avatarHaiyang Zhang <haiyangz@microsoft.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    184367dc
netvsc_drv.c 66.8 KB