[for-rc] RDMA/core: Make sure the netdev is not already associated

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Make sure that the requested net_device is not already associated with
an ib_device before trying to create a new ib_device that will be
associated with the same net_device, this is needed to avoid creating
siw and rxe devices that will be associated with the same net_device.

Fixes: 3856ec4b93c9 ("RDMA/core: Add RDMA_NLDEV_CMD_NEWLINK/DELLINK support")
Signed-off-by: Kamal Heib <kheib@xxxxxxxxxx>
---
 drivers/infiniband/core/nldev.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/infiniband/core/nldev.c b/drivers/infiniband/core/nldev.c
index a981ac2f0975..376c9e158556 100644
--- a/drivers/infiniband/core/nldev.c
+++ b/drivers/infiniband/core/nldev.c
@@ -1696,6 +1696,7 @@ static int nldev_newlink(struct sk_buff *skb, struct nlmsghdr *nlh,
 	const struct rdma_link_ops *ops;
 	char ndev_name[IFNAMSIZ];
 	struct net_device *ndev;
+	struct ib_device *ibdev;
 	char type[IFNAMSIZ];
 	int err;
 
@@ -1718,6 +1719,12 @@ static int nldev_newlink(struct sk_buff *skb, struct nlmsghdr *nlh,
 	if (!ndev)
 		return -ENODEV;
 
+	ibdev = ib_device_get_by_netdev(ndev, RDMA_DRIVER_UNKNOWN);
+	if (ibdev) {
+		ib_device_put(ibdev);
+		return -EINVAL;
+	}
+
 	down_read(&link_ops_rwsem);
 	ops = link_ops_get(type);
 #ifdef CONFIG_MODULES
-- 
2.38.1




[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux