Index: uspace/drv/nic/virtio-net/virtio-net.c
===================================================================
--- uspace/drv/nic/virtio-net/virtio-net.c	(revision 1c4035149053328f2f3e0e47a7a5bd837fe8b0eb)
+++ uspace/drv/nic/virtio-net/virtio-net.c	(revision 5f03107aa1f3a9bced9f16ed768a3ea82fa6f869)
@@ -86,6 +86,6 @@
 
 	if (!features) {
-		pio_write_8(&cfg->device_status, VIRTIO_DEV_STATUS_FAILED);
-		return ENOTSUP;
+		rc = ENOTSUP;
+		goto fail;
 	}
 
@@ -100,6 +100,6 @@
 	uint8_t status = pio_read_8(&cfg->device_status);
 	if (!(status & VIRTIO_DEV_STATUS_FEATURES_OK)) {
-		pio_write_8(&cfg->device_status, VIRTIO_DEV_STATUS_FAILED);
-		return ENOTSUP;
+		rc = ENOTSUP;
+		goto fail;
 	}
 
@@ -109,13 +109,10 @@
 		nic_addr.address[i] = netcfg->mac[i];
 	rc = nic_report_address(nic_data, &nic_addr);
-	if (rc != EOK) {
-		pio_write_8(&cfg->device_status, VIRTIO_DEV_STATUS_FAILED);
-		return rc;
-	}
+	if (rc != EOK)
+		goto fail;
 
 	ddf_msg(LVL_NOTE, "MAC address: %02x:%02x:%02x:%02x:%02x:%02x",
-	    nic_addr.address[0], nic_addr.address[1],
-	    nic_addr.address[2], nic_addr.address[3],
-	    nic_addr.address[4], nic_addr.address[5]);
+	    nic_addr.address[0], nic_addr.address[1], nic_addr.address[2],
+	    nic_addr.address[3], nic_addr.address[4], nic_addr.address[5]);
 
 	/* 8. Go live */
@@ -123,4 +120,9 @@
 
 	return EOK;
+
+fail:
+	pio_write_8(&cfg->device_status, VIRTIO_DEV_STATUS_FAILED);
+	virtio_pci_dev_cleanup(&virtio_net->virtio_dev);
+	return rc;
 }
 
