On Wed, Nov 21, 2018 at 10:44:57AM +0200, Leon Romanovsky wrote: > From: Parav Pandit <parav@xxxxxxxxxxxx> > > This is a preparation patch to provide isolation of rdma device in a > network namespace. > As first step, make rdma device visible only in init net namespace. > Subsequent patch will enable rdma device visibility back in multiple > net namespaces using compat ib_core_device device/sysfs tree. > > Given that ib subsystem depends on net stack, it needs to be > initialized after netdev stack and since it support devices, it needs > to be initialized before device subsystem; therefore, change initcall > sequence to fs_initcall, so that when ib_core is compiled in kernel > image, right init sequence is followed. > > Signed-off-by: Parav Pandit <parav@xxxxxxxxxxxx> > Signed-off-by: Leon Romanovsky <leonro@xxxxxxxxxxxx> > drivers/infiniband/core/device.c | 18 ++++++++++++++---- > 1 file changed, 14 insertions(+), 4 deletions(-) > > diff --git a/drivers/infiniband/core/device.c b/drivers/infiniband/core/device.c > index 1dc8a5726d33..d70f2afb7e41 100644 > +++ b/drivers/infiniband/core/device.c > @@ -265,10 +265,17 @@ static int ib_device_uevent(struct device *device, > return 0; > } > > +static const void *net_namespace(struct device *d) > +{ > + return &init_net; > +} > + > static struct class ib_class = { > - .name = "infiniband", > - .dev_release = ib_device_release, > - .dev_uevent = ib_device_uevent, > + .name = "infiniband", > + .dev_release = ib_device_release, > + .dev_uevent = ib_device_uevent, > + .ns_type = &net_ns_type_operations, > + .namespace = net_namespace, > }; and lets not reformat code just to add horizonal whitespace please. > static void rdma_init_coredev(struct ib_core_device *coredev, > @@ -1350,5 +1357,8 @@ static void __exit ib_core_cleanup(void) > > MODULE_ALIAS_RDMA_NETLINK(RDMA_NL_LS, 4); > > -subsys_initcall(ib_core_init); > +/* ib core relies on netdev stack to first registers net_ns_type_operations > + * ns kobject type before ib_core initialization. 'first register' > +fs_initcall(ib_core_init); Really? So very strange. Jason