diff mbox series

[rdma-next,4/8] RDMA/core: Move device addition deletion to device.c

Message ID 20190213172310.1681-5-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>

Move core device addition and removal from sysfs.c to device.c
as device.c is more appropriate place for device management.

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

Comments

Jason Gunthorpe Feb. 16, 2019, 4:58 a.m. UTC | #1
On Wed, Feb 13, 2019 at 07:23:06PM +0200, Leon Romanovsky wrote:
> From: Parav Pandit <parav@mellanox.com>
> 
> Move core device addition and removal from sysfs.c to device.c
> as device.c is more appropriate place for device management.
> 
> Signed-off-by: Parav Pandit <parav@mellanox.com>
> Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
> ---
>  drivers/infiniband/core/device.c | 9 ++++++++-
>  drivers/infiniband/core/sysfs.c  | 9 +--------
>  2 files changed, 9 insertions(+), 9 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 e602c610ab05..1bad96c1c139 100644
--- a/drivers/infiniband/core/device.c
+++ b/drivers/infiniband/core/device.c
@@ -788,11 +788,15 @@  int ib_register_device(struct ib_device *device, const char *name)
 
 	ib_device_register_rdmacg(device);
 
+	ret = device_add(&device->dev);
+	if (ret)
+		goto cg_cleanup;
+
 	ret = ib_device_register_sysfs(device);
 	if (ret) {
 		dev_warn(&device->dev,
 			 "Couldn't register device with driver model\n");
-		goto cg_cleanup;
+		goto dev_cleanup;
 	}
 
 	ret = enable_device(device);
@@ -803,6 +807,8 @@  int ib_register_device(struct ib_device *device, const char *name)
 
 sysfs_cleanup:
 	ib_device_unregister_sysfs(device);
+dev_cleanup:
+	device_del(&device->dev);
 cg_cleanup:
 	ib_device_unregister_rdmacg(device);
 	ib_cache_cleanup_one(device);
@@ -822,6 +828,7 @@  void ib_unregister_device(struct ib_device *device)
 {
 	disable_device(device);
 	ib_device_unregister_sysfs(device);
+	device_del(&device->dev);
 	ib_device_unregister_rdmacg(device);
 	ib_cache_cleanup_one(device);
 	release_name(device);
diff --git a/drivers/infiniband/core/sysfs.c b/drivers/infiniband/core/sysfs.c
index 292d07a2aed2..55d7d975393a 100644
--- a/drivers/infiniband/core/sysfs.c
+++ b/drivers/infiniband/core/sysfs.c
@@ -1341,15 +1341,10 @@  int ib_device_register_sysfs(struct ib_device *device)
 {
 	int ret;
 
-	ret = device_add(&device->dev);
+	ret = ib_setup_port_attrs(&device->coredev);
 	if (ret)
 		return ret;
 
-	ret = ib_setup_port_attrs(&device->coredev);
-	if (ret) {
-		device_del(&device->dev);
-		return ret;
-	}
 	if (device->ops.alloc_hw_stats)
 		setup_hw_stats(device, NULL, 0);
 
@@ -1363,6 +1358,4 @@  void ib_device_unregister_sysfs(struct ib_device *device)
 	kfree(device->hw_stats);
 
 	ib_free_port_attrs(&device->coredev);
-	/* Balance with device_add */
-	device_del(&device->dev);
 }