Index: kernel/genarch/src/kbd/ns16550.c
===================================================================
--- kernel/genarch/src/kbd/ns16550.c	(revision 013c4d666a79f5b3ee840b780dc07c7530965584)
+++ kernel/genarch/src/kbd/ns16550.c	(revision 5c06c1c2c7f8ec08d0fbfca6238ce9e6285ef01c)
@@ -105,5 +105,4 @@
 {
 	ns16550_instance_t *instance;
-	irq_t *irq;
 
 	chardev_initialize("ns16550_kbd", &kbrd, &ops);
@@ -114,27 +113,20 @@
 		return false;
 
-	irq = malloc(sizeof(irq_t), FRAME_ATOMIC);
-	if (!irq) {
-		free(instance);
-		return false;
-	}
-
 	instance->devno = devno;
 	instance->ns16550 = dev;
-	instance->irq = irq;
 	
-	irq_initialize(irq);
-	irq->devno = devno;
-	irq->inr = inr;
-	irq->claim = ns16550_claim;
-	irq->handler = ns16550_irq_handler;
-	irq->instance = instance;
-	irq->cir = cir;
-	irq->cir_arg = cir_arg;
-	irq_register(irq);
+	irq_initialize(&instance->irq);
+	instance->irq.devno = devno;
+	instance->irq.inr = inr;
+	instance->irq.claim = ns16550_claim;
+	instance->irq.handler = ns16550_irq_handler;
+	instance->irq.instance = instance;
+	instance->irq.cir = cir;
+	instance->irq.cir_arg = cir_arg;
+	irq_register(&instance->irq);
 
-	ns16550_irq = irq;	/* TODO: remove me soon */
+	ns16550_irq = &instance->irq;	/* TODO: remove me soon */
 	
-	while ((pio_read_8(&dev->lsr) & LSR_DATA_READY)) 
+	while ((pio_read_8(&dev->lsr) & LSR_DATA_READY))
 		(void) pio_read_8(&dev->rbr);
 	
