Revert "resource-manager: Relocate add_resource() in create_resource()" 46/289946/1
authorYoungjae Cho <y0.cho@samsung.com>
Thu, 16 Mar 2023 03:54:51 +0000 (12:54 +0900)
committerYoungjae Cho <y0.cho@samsung.com>
Thu, 16 Mar 2023 04:16:24 +0000 (13:16 +0900)
This reverts commit 5880b22f3e55b60c7b9326c51012b95f05416145.

The resource instance must be added to hashtable prior to the operation
driver->ops.create(resource->id). As this operation passes resource id,
it is possible that the operation work based on that resource id, which
denotes resource instance and must have been registered to hashtable.
Therefore, add_resource() must be followed by driver->ops.create().

Change-Id: I05b8a9f85741313c14201501fe6bbc4a5b8c7233
Signed-off-by: Youngjae Cho <y0.cho@samsung.com>
src/resource-manager/resource-manager.c

index a870a0bc70250d6498353e4d0e8a83867a23fc22..b3f3b9d3553c7e74de931322a1b6bd0509c55752 100644 (file)
@@ -248,6 +248,12 @@ create_resource(int *resource_id, int resource_type, int instance_type)
                return -ENOMEM;
        }
 
+       ret = add_resource(resource);
+       if (ret < 0) {
+               free_resource(resource);
+               return ret;
+       }
+
        for (i = 0; i < resource->num_attrs; i++)
                resource->attrs_value[i].type = driver->attrs[i].type;
 
@@ -265,14 +271,6 @@ create_resource(int *resource_id, int resource_type, int instance_type)
 
        *resource_id = resource->id;
 
-       ret = add_resource(resource);
-       if (ret < 0) {
-               if (driver->ops.delete)
-                       driver->ops.delete(resource->id);
-               free_resource(resource);
-               return ret;
-       }
-
        return 0;
 }