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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Parav Pandit <parav@xxxxxxxxxxxx>

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@xxxxxxxxxxxx>
Signed-off-by: Leon Romanovsky <leonro@xxxxxxxxxxxx>
---
 drivers/infiniband/core/device.c | 9 ++++++++-
 drivers/infiniband/core/sysfs.c  | 9 +--------
 2 files changed, 9 insertions(+), 9 deletions(-)

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);
 }
-- 
2.19.1




[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux