Index: uspace/drv/intctl/apic/apic.c
===================================================================
--- uspace/drv/intctl/apic/apic.c	(revision beb83c14fc69926ddb40d44bb96dc734b5d21545)
+++ uspace/drv/intctl/apic/apic.c	(revision 6915335bfea3f9c8ddb7e94863aff94019f9c19d)
@@ -212,4 +212,5 @@
 	void *regs;
 	errno_t rc;
+	bool bound = false;
 
 	if ((sysinfo_get_value("apic", &have_apic) != EOK) || (!have_apic)) {
@@ -241,4 +242,6 @@
 	}
 
+	bound = true;
+
 	rc = ddf_fun_add_to_category(fun_a, "irc");
 	if (rc != EOK)
@@ -247,4 +250,6 @@
 	return EOK;
 error:
+	if (bound)
+		ddf_fun_unbind(fun_a);
 	if (fun_a != NULL)
 		ddf_fun_destroy(fun_a);
Index: uspace/drv/intctl/i8259/i8259.c
===================================================================
--- uspace/drv/intctl/i8259/i8259.c	(revision beb83c14fc69926ddb40d44bb96dc734b5d21545)
+++ uspace/drv/intctl/i8259/i8259.c	(revision 6915335bfea3f9c8ddb7e94863aff94019f9c19d)
@@ -142,4 +142,5 @@
 	ddf_fun_t *fun_a = NULL;
 	errno_t rc;
+	bool bound = false;
 
 	if ((sysinfo_get_value("i8259", &have_i8259) != EOK) || (!have_i8259)) {
@@ -174,4 +175,6 @@
 	}
 
+	bound = true;
+
 	rc = ddf_fun_add_to_category(fun_a, "irc");
 	if (rc != EOK)
@@ -180,4 +183,6 @@
 	return EOK;
 error:
+	if (bound)
+		ddf_fun_unbind(fun_a);
 	if (fun_a != NULL)
 		ddf_fun_destroy(fun_a);
Index: uspace/drv/intctl/icp-ic/icp-ic.c
===================================================================
--- uspace/drv/intctl/icp-ic/icp-ic.c	(revision beb83c14fc69926ddb40d44bb96dc734b5d21545)
+++ uspace/drv/intctl/icp-ic/icp-ic.c	(revision 6915335bfea3f9c8ddb7e94863aff94019f9c19d)
@@ -116,4 +116,5 @@
 	void *regs;
 	errno_t rc;
+	bool bound = false;
 
 	rc = pio_enable((void *)res->base, sizeof(icpic_regs_t), &regs);
@@ -146,4 +147,6 @@
 	return EOK;
 error:
+	if (bound)
+		ddf_fun_unbind(fun_a);
 	if (fun_a != NULL)
 		ddf_fun_destroy(fun_a);
Index: uspace/drv/intctl/obio/obio.c
===================================================================
--- uspace/drv/intctl/obio/obio.c	(revision beb83c14fc69926ddb40d44bb96dc734b5d21545)
+++ uspace/drv/intctl/obio/obio.c	(revision 6915335bfea3f9c8ddb7e94863aff94019f9c19d)
@@ -118,4 +118,5 @@
 	ddf_fun_t *fun_a = NULL;
 	errno_t rc;
+	bool bound = false;
 
 	rc = pio_enable((void *)res->base, OBIO_SIZE, (void **) &obio->regs);
@@ -149,4 +150,6 @@
 	return EOK;
 error:
+	if (bound)
+		ddf_fun_unbind(fun_a);
 	if (fun_a != NULL)
 		ddf_fun_destroy(fun_a);
