On Tue, Sep 25, 2018 at 03:10:19PM +0300, Leon Romanovsky wrote: > From: Leon Romanovsky <leonro@xxxxxxxxxxxx> > > Generic implementation of IB device rename function. > > Signed-off-by: Leon Romanovsky <leonro@xxxxxxxxxxxx> > drivers/infiniband/core/core_priv.h | 1 + > drivers/infiniband/core/device.c | 21 +++++++++++++++++++++ > 2 files changed, 22 insertions(+) > > diff --git a/drivers/infiniband/core/core_priv.h b/drivers/infiniband/core/core_priv.h > index f60c7b65aea9..bb9007a0cca7 100644 > +++ b/drivers/infiniband/core/core_priv.h > @@ -87,6 +87,7 @@ int ib_device_register_sysfs(struct ib_device *device, > int (*port_callback)(struct ib_device *, > u8, struct kobject *)); > void ib_device_unregister_sysfs(struct ib_device *device); > +int ib_device_rename(struct ib_device *ibdev, const char *name); > > typedef void (*roce_netdev_callback)(struct ib_device *device, u8 port, > struct net_device *idev, void *cookie); > diff --git a/drivers/infiniband/core/device.c b/drivers/infiniband/core/device.c > index d105b9b2d118..96a8b8671dd9 100644 > +++ b/drivers/infiniband/core/device.c > @@ -171,6 +171,27 @@ static struct ib_device *__ib_device_get_by_name(const char *name) > return NULL; > } > > +int ib_device_rename(struct ib_device *ibdev, const char *name) > +{ > + struct ib_device *device; > + int ret = 0; > + > + if (!strcmp(name, dev_name(&ibdev->dev))) > + return ret; > + > + mutex_lock(&device_mutex); > + list_for_each_entry(device, &device_list, core_list) { > + if (!strcmp(name, dev_name(&device->dev))) { > + ret = -EEXIST; > + goto out; > + } > + } > + ret = device_rename(&ibdev->dev, name); This still needs to strcpy the completed name back over the ib_device->name until we can get rid of the last bits of that. Jason