fix refcount bugs when dev->set_state fails
[project/netifd.git] / proto-shell.c
index 555004e..41031c3 100644 (file)
@@ -138,9 +138,11 @@ proto_shell_teardown_cb(struct uloop_process *p, int ret)
        struct proto_shell_state *state;
 
        state = container_of(p, struct proto_shell_state, teardown_task);
-       state->proto.proto_event(&state->proto, IFPEV_DOWN);
+
        if (state->l3_dev.dev)
                device_remove_user(&state->l3_dev);
+
+       state->proto.proto_event(&state->proto, IFPEV_DOWN);
 }
 
 static void
@@ -408,7 +410,7 @@ proto_shell_parse_config(struct config_param_list *config, json_object *obj)
                if (attrs[i].type > BLOBMSG_TYPE_LAST)
                        goto error;
 
-               str_len += strlen(attrs[i].name + 1);
+               str_len += strlen(attrs[i].name) + 1;
        }
 
        str_buf = malloc(str_len);