diff --git a/dongle.c b/dongle.c
index 393d0edd7726d81d600b140271b72468024bdd50..f2d63286332dfdc7b2a80baf1d2e71d345fced9a 100644
--- a/dongle.c
+++ b/dongle.c
@@ -161,9 +161,11 @@ int delete_device_by_name(char *name)
 
 int delete_device(struct device *dev)
 {
-	if (dev->ubus_obj)
+	if (dev->ubus_obj) {
 		unpublish_ubus_object(global_ctx, dev->ubus_obj);
-	// is it necessary to check if list contains this node?
+		dongle_destroy_dynamic_object(dev->ubus_obj);
+	}
+
 	list_del(&dev->list);
 	free_device(dev);
 	return 0;