On Wed, Apr 10, 2019 at 08:54:14PM +0300, Leon Romanovsky wrote: > > infiniband/core uses the > > /* > > * foo > > */ > > > > Style of multi-line comment for some reason. > > It is preferable coding style for whole kernel, except netdev > and Parav used netdev coding style. > > During my reviews, I'm allowing to use netdev codding so people will be > able easily submit their patches to netdev without need to respin due to > differences in coding style. Lets try and keep infiniband/core in the mainstream style.. > > > +static int __rdma_dev_change_netns(struct ib_device *device, struct net *net) > > > +{ > > > + int ret; > > > + > > > + /* If the refcount is zero, it means disable_device() has progressed > > > + * first during unregistration phase. There is no point in changing net > > > + * namespace of device which is on path of removal. > > > + */ > > > + if (refcount_read(&device->refcount) == 0) > > > + return -ENODEV; > > > + > > > + disable_device(device); > > > + > > > + /* At this point no one would be using the device, > > > + * so it is safe to change the device net namespace. > > > + */ > > > + write_pnet(&device->coredev.rdma_net, net); > > > + /* Currently rdma devices are system wide unique. So device > > > + * name is guaranteed free in new namespace. Publish new > > > + * namespace at sysfs level. > > > + */ > > > + ret = device_rename(&device->dev, dev_name(&device->dev)); > > > + if (ret) { > > > + dev_warn(&device->dev, "%s Couldn't rename device\n", __func__); > > > + return ret; > > > > Hurm.. Technically we are supposed to hold the devices_rwsem if we are > > manipulating the name. Inferring that we don't have to because the > > refcount is 0 is a little over optimizing for my tastes > > > > .. and if this fails the device is now permanently stuck with a 0 > > refcount.. So we should re-enable it anyhow. The sysfs will be screwed > > up but what can you do.. > > Why? We will enter device_rename only in case refcount != 0, see check > above. disable_device() makes it 0. Jason