On Mon, Dec 12, 2022 at 11:22:40AM +0200, Kamal Heib wrote: > 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; > + } This is racy What is wrong with creating two IB devices on top of the same net device? Jason