On Wed, Nov 16, 2016 at 2:04 AM, Daniel Borkmann <dan...@iogearbox.net> wrote: > mlx5e_xdp_set() is currently the only place where we drop reference on the > prog sitting in priv->xdp_prog when it's exchanged by a new one. We also > need to make sure that we eventually release that reference, for example, > in case the netdev is dismantled. > > Fixes: 86994156c736 ("net/mlx5e: XDP fast RX drop bpf programs support") > Signed-off-by: Daniel Borkmann <dan...@iogearbox.net> > --- > drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c > b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c > index cf26672..60fe54c 100644 > --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c > +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c > @@ -3715,6 +3715,9 @@ static void mlx5e_nic_cleanup(struct mlx5e_priv *priv) > > if (MLX5_CAP_GEN(mdev, vport_group_manager)) > mlx5_eswitch_unregister_vport_rep(esw, 0); > + > + if (priv->xdp_prog) > + bpf_prog_put(priv->xdp_prog); > } >
I thought that on unregister_netdev ndo_xdp_set will be called with NULL prog to cleanup. like any other resources (Vlans/mac_lists/ etc..), why xdp should be different ? Anyway if this is the case, I am ok with this fix, you can even send it to net (it looks like a serious leak). Saeed.