#define EXPORT __attribute__ ((visibility("default")))
#endif
+static void legacy_free_gadget(struct usb_gadget *gadget);
+
static int get_int_from_file(char *path, int *_val, int base)
{
char buf[INT_BUF_SIZE];
goto stop_services;
}
+ legacy_free_gadget(gadget);
return 0;
stop_services:
while (--i >= 0) {
struct usb_function_with_service, func);
systemd_stop_service(fws->service);
}
+ legacy_free_gadget(gadget);
disable_gadget:
sys_set_str(LEGACY_ENABLE_PATH, LEGACY_DISABLE);
fws = container_of(gadget->funcs[i], struct usb_function_with_service, func);
ret = systemd_stop_service(fws->service);
if (ret < 0)
- return ret;
+ goto free_gadget;
}
- return sys_set_str(LEGACY_ENABLE_PATH, LEGACY_DISABLE);
+ ret = sys_set_str(LEGACY_ENABLE_PATH, LEGACY_DISABLE);
+
+free_gadget:
+ legacy_free_gadget(gadget);
+ return ret;
}
static void legacy_free_config(struct usb_configuration *config)
free(gadget->funcs);
}
+
+ free(gadget);
}
EXPORT