IB/ipoib: Limit call to free rdma_netdev for capable devices
Limit calls to free_rdma_netdev() for capable devices only.
Fixes: cd565b4b51
('IB/IPoIB: Support acceleration options callbacks')
Signed-off-by: Alex Vesker <valex@mellanox.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
parent
ab156afd3e
commit
022d038a16
|
@ -3692,8 +3692,10 @@ static void *mlx5_ib_add(struct mlx5_core_dev *mdev)
|
||||||
dev->ib_dev.check_mr_status = mlx5_ib_check_mr_status;
|
dev->ib_dev.check_mr_status = mlx5_ib_check_mr_status;
|
||||||
dev->ib_dev.get_port_immutable = mlx5_port_immutable;
|
dev->ib_dev.get_port_immutable = mlx5_port_immutable;
|
||||||
dev->ib_dev.get_dev_fw_str = get_dev_fw_str;
|
dev->ib_dev.get_dev_fw_str = get_dev_fw_str;
|
||||||
dev->ib_dev.alloc_rdma_netdev = mlx5_ib_alloc_rdma_netdev;
|
if (MLX5_CAP_GEN(mdev, ipoib_enhanced_offloads)) {
|
||||||
dev->ib_dev.free_rdma_netdev = mlx5_ib_free_rdma_netdev;
|
dev->ib_dev.alloc_rdma_netdev = mlx5_ib_alloc_rdma_netdev;
|
||||||
|
dev->ib_dev.free_rdma_netdev = mlx5_ib_free_rdma_netdev;
|
||||||
|
}
|
||||||
if (mlx5_core_is_pf(mdev)) {
|
if (mlx5_core_is_pf(mdev)) {
|
||||||
dev->ib_dev.get_vf_config = mlx5_ib_get_vf_config;
|
dev->ib_dev.get_vf_config = mlx5_ib_get_vf_config;
|
||||||
dev->ib_dev.set_vf_link_state = mlx5_ib_set_vf_link_state;
|
dev->ib_dev.set_vf_link_state = mlx5_ib_set_vf_link_state;
|
||||||
|
|
|
@ -2301,7 +2301,10 @@ static void ipoib_remove_one(struct ib_device *device, void *client_data)
|
||||||
flush_workqueue(priv->wq);
|
flush_workqueue(priv->wq);
|
||||||
|
|
||||||
unregister_netdev(priv->dev);
|
unregister_netdev(priv->dev);
|
||||||
free_netdev(priv->dev);
|
if (device->free_rdma_netdev)
|
||||||
|
device->free_rdma_netdev(priv->dev);
|
||||||
|
else
|
||||||
|
free_netdev(priv->dev);
|
||||||
|
|
||||||
list_for_each_entry_safe(cpriv, tcpriv, &priv->child_intfs, list)
|
list_for_each_entry_safe(cpriv, tcpriv, &priv->child_intfs, list)
|
||||||
kfree(cpriv);
|
kfree(cpriv);
|
||||||
|
|
Loading…
Reference in New Issue