diff options
-rw-r--r-- | alias.c | 3 | ||||
-rw-r--r-- | ubus.c | 7 |
2 files changed, 7 insertions, 3 deletions
@@ -108,7 +108,7 @@ alias_notify_device(const char *name, struct device *dev) alias = avl_find_element(&aliases, name, alias, avl); if (!alias) - return; + goto out; alias->cleanup = !dev; if (dev) { @@ -128,6 +128,7 @@ alias_notify_device(const char *name, struct device *dev) device_broadcast_event(&alias->dev, DEV_EVENT_UPDATE_IFNAME); } +out: device_unlock(); } @@ -595,8 +595,10 @@ netifd_iface_handle_device(struct ubus_context *ctx, struct ubus_object *obj, device_lock(); dev = device_get(blobmsg_data(tb[DEV_NAME]), add ? 2 : 0); - if (add && !dev) - return UBUS_STATUS_NOT_FOUND; + if (add && !dev) { + ret = UBUS_STATUS_NOT_FOUND; + goto out; + } if (add) { device_set_present(dev, true); @@ -609,6 +611,7 @@ netifd_iface_handle_device(struct ubus_context *ctx, struct ubus_object *obj, ret = interface_remove_link(iface, dev); } +out: device_unlock(); return ret; |