diff mbox series

[rdma-next,1/8] RDMA/core: Use simpler device_del() instead of device_unregister()

Message ID 20190213172310.1681-2-leon@kernel.org (mailing list archive)
State Superseded
Delegated to: Jason Gunthorpe
Headers show
Series Register infiniband class as net namespace aware class | expand

Commit Message

Leon Romanovsky Feb. 13, 2019, 5:23 p.m. UTC
From: Parav Pandit <parav@mellanox.com>

Instead of holding extra reference using get_device() that
device_unregister() releases, simplify it as below.

device_add() balance with device_del().
device_initialize() balance with put_device().

Signed-off-by: Parav Pandit <parav@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
---
 drivers/infiniband/core/device.c | 1 +
 drivers/infiniband/core/sysfs.c  | 7 ++-----
 2 files changed, 3 insertions(+), 5 deletions(-)

Comments

Jason Gunthorpe Feb. 16, 2019, 4:42 a.m. UTC | #1
On Wed, Feb 13, 2019 at 07:23:03PM +0200, Leon Romanovsky wrote:
> From: Parav Pandit <parav@mellanox.com>
> 
> Instead of holding extra reference using get_device() that
> device_unregister() releases, simplify it as below.
> 
> device_add() balance with device_del().
> device_initialize() balance with put_device().
> 
> Signed-off-by: Parav Pandit <parav@mellanox.com>
> Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
> ---
>  drivers/infiniband/core/device.c | 1 +
>  drivers/infiniband/core/sysfs.c  | 7 ++-----
>  2 files changed, 3 insertions(+), 5 deletions(-)

Applied to for-next

Thanks,
Jason
diff mbox series

Patch

diff --git a/drivers/infiniband/core/device.c b/drivers/infiniband/core/device.c
index 868d656f3dda..b9baa4a15b42 100644
--- a/drivers/infiniband/core/device.c
+++ b/drivers/infiniband/core/device.c
@@ -373,6 +373,7 @@  void ib_dealloc_device(struct ib_device *device)
 	WARN_ON(!xa_empty(&device->client_data));
 	WARN_ON(refcount_read(&device->refcount));
 	rdma_restrack_clean(device);
+	/* Balance with device_initialize */
 	put_device(&device->dev);
 }
 EXPORT_SYMBOL(ib_dealloc_device);
diff --git a/drivers/infiniband/core/sysfs.c b/drivers/infiniband/core/sysfs.c
index c75692802da8..824bd2c283f2 100644
--- a/drivers/infiniband/core/sysfs.c
+++ b/drivers/infiniband/core/sysfs.c
@@ -1351,15 +1351,12 @@  int ib_device_register_sysfs(struct ib_device *device)
 
 void ib_device_unregister_sysfs(struct ib_device *device)
 {
-	/* Hold device until ib_dealloc_device() */
-	get_device(&device->dev);
-
 	free_port_list_attributes(device);
 
 	if (device->hw_stats) {
 		kfree(device->hw_stats);
 		free_hsag(&device->dev.kobj, device->hw_stats_ag);
 	}
-
-	device_unregister(&device->dev);
+	/* Balance with device_add */
+	device_del(&device->dev);
 }