bpf, mlx5: drop priv->xdp_prog reference on netdev cleanup
authorDaniel Borkmann <daniel@iogearbox.net>
Sat, 19 Nov 2016 00:45:02 +0000 (01:45 +0100)
committerDavid S. Miller <davem@davemloft.net>
Mon, 21 Nov 2016 16:25:58 +0000 (11:25 -0500)
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, otherwise we leak the program.

Fixes: 86994156c736 ("net/mlx5e: XDP fast RX drop bpf programs support")
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Saeed Mahameed <saeedm@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlx5/core/en_main.c

index 491cff9cf368e75f6f9c5aae2b9ec6d665817e60..6957608788981312ee508266f728ccfcbd11e005 100644 (file)
@@ -3705,6 +3705,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);
 }
 
 static int mlx5e_init_nic_rx(struct mlx5e_priv *priv)