Index: uspace/drv/bus/usb/vhc/hub/virthub.c
===================================================================
--- uspace/drv/bus/usb/vhc/hub/virthub.c	(revision 393302009dc835da26285d65656e166c29b4540f)
+++ uspace/drv/bus/usb/vhc/hub/virthub.c	(revision 33b8d024bc268f2773c26e74a40dada11bb71e58)
@@ -156,14 +156,16 @@
 	dev->descriptors = &descriptors;
 	dev->address = 0;
-	dev->name = str_dup(name);
-	if (!dev->name)
+
+	char *n = str_dup(name);
+	if (!n)
 		return ENOMEM;
 
 	hub_t *hub = malloc(sizeof(hub_t));
 	if (hub == NULL) {
-		free(dev->name);
+		free(n);
 		return ENOMEM;
 	}
 
+	dev->name = n;
 	hub_init(hub);
 	dev->device_data = hub;
Index: uspace/drv/platform/amdm37x/main.c
===================================================================
--- uspace/drv/platform/amdm37x/main.c	(revision 393302009dc835da26285d65656e166c29b4540f)
+++ uspace/drv/platform/amdm37x/main.c	(revision 33b8d024bc268f2773c26e74a40dada11bb71e58)
@@ -49,5 +49,6 @@
 typedef struct {
 	const char *name;
-	match_id_t match_id;
+	const char *id;
+	int score;
 	hw_resource_list_t hw_resources;
 } amdm37x_fun_t;
@@ -133,15 +134,18 @@
 {
 	.name = "ohci",
-	.match_id = { .id = "usb/host=ohci", .score = 90 },
+	.id = "usb/host=ohci",
+	.score = 90,
 	.hw_resources = { .resources = ohci_res, .count = ARRAY_SIZE(ohci_res) }
 },
 {
 	.name = "ehci",
-	.match_id = { .id = "usb/host=ehci", .score = 90 },
+	.id = "usb/host=ehci",
+	.score = 90,
 	.hw_resources = { .resources = ehci_res, .count = ARRAY_SIZE(ehci_res) }
 },
 {
 	.name = "fb",
-	.match_id = { .id = "amdm37x&dispc", .score = 90 },
+	.id = "amdm37x&dispc",
+	.score = 90,
 	.hw_resources = { .resources = disp_res, .count = ARRAY_SIZE(disp_res) }
 },
@@ -174,6 +178,5 @@
 	
 	/* Add match id */
-	errno_t ret = ddf_fun_add_match_id(fnode,
-	    fun->match_id.id, fun->match_id.score);
+	errno_t ret = ddf_fun_add_match_id(fnode, fun->id, fun->score);
 	if (ret != EOK) {
 		ddf_fun_destroy(fnode);
