mkdir() function is now performed after successful memory allocation and gadget function creation. Signed-off-by: Stanislaw Wadas <s.wadas@xxxxxxxxxxx> --- src/gadget.c | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/gadget.c b/src/gadget.c index d226d32..79a1698 100644 --- a/src/gadget.c +++ b/src/gadget.c @@ -492,12 +492,6 @@ struct gadget *gadget_create_gadget(struct state *s, char *name, sprintf(gpath, "%s/%s", s->path, name); - ret = mkdir(gpath, S_IRWXU|S_IRWXG|S_IRWXO); - if (ret < 0) { - ERRORNO("%s\n", gpath); - return NULL; - } - g = malloc(sizeof(struct gadget)); if (!g) { ERRORNO("allocating gadget\n"); @@ -515,6 +509,12 @@ struct gadget *gadget_create_gadget(struct state *s, char *name, gadget_write_hex16(s->path, name, "idVendor", vendor); gadget_write_hex16(s->path, name, "idProduct", product); + ret = mkdir(gpath, S_IRWXU|S_IRWXG|S_IRWXO); + if (ret < 0) { + ERRORNO("%s\n", gpath); + return NULL; + } + /* Insert in string order */ if (TAILQ_EMPTY(&s->gadgets) || (strcmp(name, TAILQ_FIRST(&s->gadgets)->name) < 0)) @@ -628,12 +628,6 @@ struct function *gadget_create_function(struct gadget *g, enum function_type typ sprintf(fpath, "%s/%s/functions/%s", g->path, g->name, name); - ret = mkdir(fpath, S_IRWXU|S_IRWXG|S_IRWXO); - if (ret < 0) { - ERRORNO("%s\n", fpath); - return NULL; - } - f = malloc(sizeof(struct function)); if (!f) { ERRORNO("allocating function\n"); @@ -646,6 +640,12 @@ struct function *gadget_create_function(struct gadget *g, enum function_type typ gadget_parse_function_attrs(f); + ret = mkdir(fpath, S_IRWXU|S_IRWXG|S_IRWXO); + if (ret < 0) { + ERRORNO("%s\n", fpath); + return NULL; + } + /* Insert in string order */ if (TAILQ_EMPTY(&g->functions) || (strcmp(name, TAILQ_FIRST(&g->functions)->name) < 0)) @@ -682,12 +682,6 @@ struct config *gadget_create_config(struct gadget *g, char *name) sprintf(cpath, "%s/%s/configs/%s", g->path, g->name, name); - ret = mkdir(cpath, S_IRWXU|S_IRWXG|S_IRWXO); - if (ret < 0) { - ERRORNO("%s\n", cpath); - return NULL; - } - c = malloc(sizeof(struct config)); if (!c) { ERRORNO("allocating configuration\n"); @@ -698,6 +692,12 @@ struct config *gadget_create_config(struct gadget *g, char *name) strcpy(c->name, name); sprintf(c->path, "%s/%s/%s/%s", g->path, g->name, "configs", name); + ret = mkdir(cpath, S_IRWXU|S_IRWXG|S_IRWXO); + if (ret < 0) { + ERRORNO("%s\n", cpath); + return NULL; + } + /* Insert in string order */ if (TAILQ_EMPTY(&g->configs) || (strcmp(name, TAILQ_FIRST(&g->configs)->name) < 0)) -- 1.7.9.5 -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html