diff --git a/src/i1905_ubus.c b/src/i1905_ubus.c index 625a6cbb9430a076f0dd724f330cb776d44444c5..0494f052f1c50c9552c9ff236ce306d950ada0ab 100644 --- a/src/i1905_ubus.c +++ b/src/i1905_ubus.c @@ -1590,6 +1590,7 @@ int i1905_ubus_interface_del(struct ubus_context *ctx, struct ubus_object *obj, { struct i1905_private *p = container_of(obj, struct i1905_private, obj); struct blob_attr *tb[NUM_I1905_INTERFACE_POLICY]; + struct i1905_interface *iface; char ifname[16] = {0}; int ret; @@ -1604,6 +1605,13 @@ int i1905_ubus_interface_del(struct ubus_context *ctx, struct ubus_object *obj, ifname[15] = '\0'; ret = i1905_remove_interface_object(p, ifname); + + iface = i1905_ifname_to_interface(p, ifname); + if (!iface) { + dbg("%s: %s is not a 1905 interface\n", __func__, ifname); + return -EINVAL; + } + i1905_teardown_interface(p, ifname); return ret; }