ubus: fix displaying interface data items
[project/netifd.git] / device.c
index f8834f0..2fb68d7 100644 (file)
--- a/device.c
+++ b/device.c
@@ -185,6 +185,10 @@ static int device_broadcast_cb(void *ctx, struct safe_list *list)
        struct device_user *dep = container_of(list, struct device_user, list);
        int *ev = ctx;
 
+       /* device might have been removed by an earlier callback */
+       if (!dep->dev)
+               return 0;
+
        if (dep->cb)
                dep->cb(dep, *ev);
        return 0;
@@ -619,7 +623,7 @@ device_create(const char *name, const struct device_type *type,
                odev->current_config = true;
                change = device_set_config(odev, type, config);
                if (odev->external) {
-                       system_if_apply_settings(odev, &odev->settings);
+                       system_if_apply_settings(odev, &odev->settings, odev->settings.flags);
                        change = DEV_CONFIG_APPLIED;
                }
                switch (change) {