diff options
Diffstat (limited to 'drivers/infiniband/core/cma.c')
-rw-r--r-- | drivers/infiniband/core/cma.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c index e6dfa1bd3def..5f65a78b27c9 100644 --- a/drivers/infiniband/core/cma.c +++ b/drivers/infiniband/core/cma.c | |||
@@ -2462,18 +2462,24 @@ static int cma_resolve_iboe_route(struct rdma_id_private *id_priv) | |||
2462 | 2462 | ||
2463 | if (addr->dev_addr.bound_dev_if) { | 2463 | if (addr->dev_addr.bound_dev_if) { |
2464 | ndev = dev_get_by_index(&init_net, addr->dev_addr.bound_dev_if); | 2464 | ndev = dev_get_by_index(&init_net, addr->dev_addr.bound_dev_if); |
2465 | if (!ndev) | 2465 | if (!ndev) { |
2466 | return -ENODEV; | 2466 | ret = -ENODEV; |
2467 | goto err2; | ||
2468 | } | ||
2467 | 2469 | ||
2468 | if (ndev->flags & IFF_LOOPBACK) { | 2470 | if (ndev->flags & IFF_LOOPBACK) { |
2469 | dev_put(ndev); | 2471 | dev_put(ndev); |
2470 | if (!id_priv->id.device->get_netdev) | 2472 | if (!id_priv->id.device->get_netdev) { |
2471 | return -EOPNOTSUPP; | 2473 | ret = -EOPNOTSUPP; |
2474 | goto err2; | ||
2475 | } | ||
2472 | 2476 | ||
2473 | ndev = id_priv->id.device->get_netdev(id_priv->id.device, | 2477 | ndev = id_priv->id.device->get_netdev(id_priv->id.device, |
2474 | id_priv->id.port_num); | 2478 | id_priv->id.port_num); |
2475 | if (!ndev) | 2479 | if (!ndev) { |
2476 | return -ENODEV; | 2480 | ret = -ENODEV; |
2481 | goto err2; | ||
2482 | } | ||
2477 | } | 2483 | } |
2478 | 2484 | ||
2479 | route->path_rec->net = &init_net; | 2485 | route->path_rec->net = &init_net; |