struct usbdown_entity *usb;
const char *argv[3];
const char **parg = argv;
- char *name_bkp;
+ char *name_bkp = NULL;
const char *find_name;
char *str;
+ int ret = -ENODEV;
if (name[0] == '/') {
name_bkp = strdup(name);
*parg = strsep(&name_bkp, "/");
if (*parg == NULL) {
printk("Invalid number of arguments.\n");
- return -ENODEV;
+ ret = -ENODEV;
+ goto out;
}
}
list_for_each_entry(usb, &usbdown_list, list) {
if (usb->name[0] != '/') {
- if (!strncmp(usb->name, find_name, strlen(usb->name)))
- return usb->alt_num;
+ if (!strncmp(usb->name, find_name, strlen(usb->name))) {
+ ret = usb->alt_num;
+ goto out;
+ }
} else {
str = strstr(usb->name, find_name);
if (!str)
continue;
if (strlen(usb->name) ==
- ((str - usb->name) + strlen(find_name)))
- return usb->alt_num;
+ ((str - usb->name) + strlen(find_name))) {
+ ret = usb->alt_num;
+ goto out;
+ }
}
}
- return -ENODEV;
+out:
+ if (name_bkp)
+ free(name_bkp);
+ return ret;
}
static int usb_fill_entity(struct usbdown_entity *usb, char *s, int alt_num,