Index: uspace/drv/block/ahci/ahci.c
===================================================================
--- uspace/drv/block/ahci/ahci.c	(revision 8d2dd7f2d52fbc7693f94b66e451eeff3756d061)
+++ uspace/drv/block/ahci/ahci.c	(revision 24abb85d299db39cc03f429adc41bb1ed4f23e23)
@@ -1185,12 +1185,12 @@
 	ct.ranges = ahci_ranges;
 	
-	int rc = register_interrupt_handler(dev, hw_res_parsed.irqs.irqs[0],
-	    ahci_interrupt, &ct);
-	if (rc != EOK) {
+	int irq_cap = register_interrupt_handler(dev,
+	    hw_res_parsed.irqs.irqs[0], ahci_interrupt, &ct);
+	if (irq_cap < 0) {
 		ddf_msg(LVL_ERROR, "Failed registering interrupt handler.");
 		goto error_register_interrupt_handler;
 	}
 	
-	rc = irc_enable_interrupt(hw_res_parsed.irqs.irqs[0]);
+	int rc = irc_enable_interrupt(hw_res_parsed.irqs.irqs[0]);
 	if (rc != EOK) {
 		ddf_msg(LVL_ERROR, "Failed enable interupt.");
@@ -1202,5 +1202,5 @@
 	
 error_enable_interrupt:
-	unregister_interrupt_handler(dev, hw_res_parsed.irqs.irqs[0]);
+	unregister_interrupt_handler(dev, irq_cap);
 	
 error_register_interrupt_handler:
Index: uspace/drv/block/ddisk/ddisk.c
===================================================================
--- uspace/drv/block/ddisk/ddisk.c	(revision 8d2dd7f2d52fbc7693f94b66e451eeff3756d061)
+++ uspace/drv/block/ddisk/ddisk.c	(revision 24abb85d299db39cc03f429adc41bb1ed4f23e23)
@@ -112,4 +112,6 @@
 	ddisk_regs_t *ddisk_regs;
 
+	int irq_cap;
+
 	bd_srvs_t bds;
 } ddisk_t;
@@ -447,4 +449,6 @@
 	ddisk->bds.sarg = ddisk;
 
+	ddisk->irq_cap = -1;
+
 	/*
 	 * Enable access to ddisk's PIO registers.
@@ -499,7 +503,8 @@
 	ddisk_irq_commands[0].addr = (void *) &res_phys->status;
 	ddisk_irq_commands[3].addr = (void *) &res_phys->command;
-	rc = register_interrupt_handler(dev, ddisk->ddisk_res.irq,
+	ddisk->irq_cap = register_interrupt_handler(dev, ddisk->ddisk_res.irq,
 	    ddisk_irq_handler, &ddisk_irq_code);
-	if (rc != EOK) {
+	if (ddisk->irq_cap < 0) {
+		rc = ddisk->irq_cap;
 		ddf_msg(LVL_ERROR, "Failed to register interrupt handler.");
 		goto error;
@@ -541,5 +546,5 @@
 	}
 
-	unregister_interrupt_handler(ddisk->dev, ddisk->ddisk_res.irq);
+	unregister_interrupt_handler(ddisk->dev, ddisk->irq_cap);
 	
 	rc = pio_disable(ddisk->ddisk_regs, sizeof(ddisk_regs_t));
