host->revmap_type = revmap_type;
        host->inval_irq = inval_irq;
        host->ops = ops;
-       host->of_node = of_node;
+       host->of_node = of_node_get(of_node);
 
        if (host->ops->match == NULL)
                host->ops->match = default_irq_host_match;
 
                goto out_free_fifo;
        }
 
-       msic->irq_host = irq_alloc_host(of_node_get(dn), IRQ_HOST_MAP_NOMAP,
+       msic->irq_host = irq_alloc_host(dn, IRQ_HOST_MAP_NOMAP,
                                        NR_IRQS, &msic_host_ops, 0);
        if (!msic->irq_host) {
                printk(KERN_ERR "axon_msi: couldn't allocate irq_host for %s\n",
 
                panic("spider_pic: can't map registers !");
 
        /* Allocate a host */
-       pic->host = irq_alloc_host(of_node_get(of_node), IRQ_HOST_MAP_LINEAR,
+       pic->host = irq_alloc_host(of_node, IRQ_HOST_MAP_LINEAR,
                                   SPIDER_SRC_COUNT, &spider_host_ops,
                                   SPIDER_IRQ_INVALID);
        if (pic->host == NULL)
 
 
        out_be32(&cpic_reg->cpic_cimr, 0);
 
-       cpm_pic_host = irq_alloc_host(of_node_get(np), IRQ_HOST_MAP_LINEAR,
+       cpm_pic_host = irq_alloc_host(np, IRQ_HOST_MAP_LINEAR,
                                      64, &cpm_pic_host_ops, 64);
        if (cpm_pic_host == NULL) {
                printk(KERN_ERR "CPM2 PIC: failed to allocate irq host!\n");
 
        out_be32(&cpm2_intctl->ic_scprrl, 0x05309770);
 
        /* create a legacy host */
-       cpm2_pic_host = irq_alloc_host(of_node_get(node), IRQ_HOST_MAP_LINEAR,
+       cpm2_pic_host = irq_alloc_host(node, IRQ_HOST_MAP_LINEAR,
                                       64, &cpm2_pic_host_ops, 64);
        if (cpm2_pic_host == NULL) {
                printk(KERN_ERR "CPM2 PIC: failed to allocate irq host!\n");
 
        spin_unlock_irqrestore(&i8259_lock, flags);
 
        /* create a legacy host */
-       i8259_host = irq_alloc_host(of_node_get(node), IRQ_HOST_MAP_LEGACY,
+       i8259_host = irq_alloc_host(node, IRQ_HOST_MAP_LEGACY,
                                    0, &i8259_host_ops, 0);
        if (i8259_host == NULL) {
                printk(KERN_ERR "i8259: failed to allocate irq host !\n");
 
 
        memset(ipic, 0, sizeof(struct ipic));
 
-       ipic->irqhost = irq_alloc_host(of_node_get(node), IRQ_HOST_MAP_LINEAR,
+       ipic->irqhost = irq_alloc_host(node, IRQ_HOST_MAP_LINEAR,
                                       NR_IPIC_INTS,
                                       &ipic_host_ops, 0);
-       if (ipic->irqhost == NULL) {
-               of_node_put(node);
+       if (ipic->irqhost == NULL)
                return NULL;
-       }
 
        ipic->regs = ioremap(res.start, res.end - res.start + 1);
 
 
        memset(mpic, 0, sizeof(struct mpic));
        mpic->name = name;
 
-       mpic->irqhost = irq_alloc_host(of_node_get(node), IRQ_HOST_MAP_LINEAR,
+       mpic->irqhost = irq_alloc_host(node, IRQ_HOST_MAP_LINEAR,
                                       isu_size, &mpic_host_ops,
                                       flags & MPIC_LARGE_VECTORS ? 2048 : 256);
-       if (mpic->irqhost == NULL) {
-               of_node_put(node);
+       if (mpic->irqhost == NULL)
                return NULL;
-       }
 
        mpic->irqhost->host_data = mpic;
        mpic->hc_irq = mpic_irq_chip;
 
 
        memset(qe_ic, 0, sizeof(struct qe_ic));
 
-       qe_ic->irqhost = irq_alloc_host(of_node_get(node), IRQ_HOST_MAP_LINEAR,
+       qe_ic->irqhost = irq_alloc_host(node, IRQ_HOST_MAP_LINEAR,
                                        NR_QE_IC_INTS, &qe_ic_host_ops, 0);
-       if (qe_ic->irqhost == NULL) {
-               of_node_put(node);
+       if (qe_ic->irqhost == NULL)
                return;
-       }
 
        qe_ic->regs = ioremap(res.start, res.end - res.start + 1);
 
 
 {
        DBG("Tsi108_pci_int_init: initializing PCI interrupts\n");
 
-       pci_irq_host = irq_alloc_host(of_node_get(node), IRQ_HOST_MAP_LEGACY,
+       pci_irq_host = irq_alloc_host(node, IRQ_HOST_MAP_LEGACY,
                                      0, &pci_irq_host_ops, 0);
        if (pci_irq_host == NULL) {
                printk(KERN_ERR "pci_irq_host: failed to allocate irq host !\n");
-               of_node_put(node);
                return;
        }
 
 
        }
        uic->dcrbase = *dcrreg;
 
-       uic->irqhost = irq_alloc_host(of_node_get(node), IRQ_HOST_MAP_LINEAR,
+       uic->irqhost = irq_alloc_host(node, IRQ_HOST_MAP_LINEAR,
                                      NR_UIC_INTS, &uic_host_ops, -1);
-       if (! uic->irqhost) {
-               of_node_put(node);
+       if (! uic->irqhost)
                return NULL; /* FIXME: panic? */
-       }
 
        uic->irqhost->host_data = uic;