From: Tomer Tayar <tta...@habana.ai>

hl_sysfs_fini() is called only if hl_sysfs_init() completes
successfully. Therefore if hl_sysfs_init() fails, need to remove any
sysfs group that was added until that point.

Signed-off-by: Tomer Tayar <tta...@habana.ai>
Reviewed-by: Oded Gabbay <ogab...@kernel.org>
Signed-off-by: Oded Gabbay <ogab...@kernel.org>
---
 drivers/accel/habanalabs/common/sysfs.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/accel/habanalabs/common/sysfs.c 
b/drivers/accel/habanalabs/common/sysfs.c
index 735d8bed0066..01f89f029355 100644
--- a/drivers/accel/habanalabs/common/sysfs.c
+++ b/drivers/accel/habanalabs/common/sysfs.c
@@ -497,10 +497,14 @@ int hl_sysfs_init(struct hl_device *hdev)
        if (rc) {
                dev_err(hdev->dev,
                        "Failed to add groups to device, error %d\n", rc);
-               return rc;
+               goto remove_groups;
        }
 
        return 0;
+
+remove_groups:
+       device_remove_groups(hdev->dev, hl_dev_attr_groups);
+       return rc;
 }
 
 void hl_sysfs_fini(struct hl_device *hdev)
-- 
2.40.0

Reply via email to