If operations following the add_resource() fail, then it is necessary
to cleanup resource instance from hashtable that has been added by
add_resource(). Instead of impelementing cleanup, move add_resource()
to the end of create_resource() so that nothing follow add_resource().
Change-Id: I705a3dc3487c8ebf9e80cff51b7e89069a6a4f1a
Signed-off-by: Youngjae Cho <y0.cho@samsung.com>
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;
*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;
}