goto err_funcs;
}
+ power_funcs->bus = calloc(1, sizeof(struct pass_resource_bus));
+ if (!power_funcs->bus) {
+ ret = -ENOMEM;
+ goto err_cpu;
+ }
+
+ power_funcs->gpu = calloc(1, sizeof(struct pass_resource_gpu));
+ if (!power_funcs->gpu) {
+ ret = -ENOMEM;
+ goto err_bus;
+ }
+
power_funcs->memory = calloc(1, sizeof(struct pass_resource_memory));
if (!power_funcs->memory) {
ret = -ENOMEM;
- goto err_cpu;
+ goto err_gpu;
+ }
+
+ power_funcs->battery = calloc(1, sizeof(struct pass_resource_battery));
+ if (!power_funcs->battery) {
+ ret = -ENOMEM;
+ goto err_memory;
+ }
+
+ power_funcs->nonstandard = calloc(1, sizeof(struct pass_resource_nonstandard));
+ if (!power_funcs->nonstandard) {
+ ret = -ENOMEM;
+ goto err_battery;
}
*data = (void *)power_funcs;
return 0;
+
+err_battery:
+ free(power_funcs->battery);
+err_memory:
+ free(power_funcs->memory);
+err_gpu:
+ free(power_funcs->gpu);
+err_bus:
+ free(power_funcs->bus);
err_cpu:
- if (power_funcs->cpu)
- free(power_funcs->cpu);
+ free(power_funcs->cpu);
err_funcs:
free(power_funcs);
funcs = (hal_backend_power_funcs *)data;
- if (funcs->cpu)
- free(funcs->cpu);
- if (funcs->memory)
- free(funcs->memory);
+ free(funcs->cpu);
+ free(funcs->bus);
+ free(funcs->gpu);
+ free(funcs->memory);
+ free(funcs->battery);
+ free(funcs->nonstandard);
free(funcs);