Index: uspace/drv/bus/pci/pciintel/pci.c
===================================================================
--- uspace/drv/bus/pci/pciintel/pci.c	(revision ef9460bf850bb5bfce022f58b89eb15728aced77)
+++ uspace/drv/bus/pci/pciintel/pci.c	(revision 5f6e25e31dad65ed596bf61da69a51ec21c54ec7)
@@ -215,22 +215,4 @@
 };
 
-static pci_bus_t *pci_bus_new(void)
-{
-	pci_bus_t *bus;
-	
-	bus = (pci_bus_t *) calloc(1, sizeof(pci_bus_t));
-	if (bus == NULL)
-		return NULL;
-	
-	fibril_mutex_initialize(&bus->conf_mutex);
-	return bus;
-}
-
-static void pci_bus_delete(pci_bus_t *bus)
-{
-	assert(bus != NULL);
-	free(bus);
-}
-
 static void pci_conf_read(pci_fun_t *fun, int reg, uint8_t *buf, size_t len)
 {
@@ -584,5 +566,5 @@
 	dnode->parent_sess = NULL;
 	
-	bus = pci_bus_new();
+	bus = ddf_dev_data_alloc(dnode, sizeof(pci_bus_t));
 	if (bus == NULL) {
 		ddf_msg(LVL_ERROR, "pci_add_device allocation failed.");
@@ -590,4 +572,6 @@
 		goto fail;
 	}
+	fibril_mutex_initialize(&bus->conf_mutex);
+
 	bus->dnode = dnode;
 	dnode->driver_data = bus;
@@ -655,7 +639,4 @@
 	
 fail:
-	if (bus != NULL)
-		pci_bus_delete(bus);
-	
 	if (dnode->parent_sess)
 		async_hangup(dnode->parent_sess);
