aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorMilton Miller <miltonm@bga.com>2011-05-24 16:34:17 -0400
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2011-05-25 23:38:59 -0400
commit3d1b5e206a4f0ce46f2aa138590738c5d8e118ac (patch)
tree23e10e1c4d3a89bdb6c870998e3b4843358e75b8 /arch
parent8142f032a90680ed2fb080ca694ffe9509276361 (diff)
powerpc/irq: Always free duplicate IRQ_LEGACY hosts
Since kmem caches are allocated before init_IRQ as noted in 3af259d155 (powerpc: Radix trees are available before init_IRQ), we now call kmalloc in all cases and can can always call kfree if we are asked to allocate a duplicate or conflicting IRQ_HOST_MAP_LEGACY host. Signed-off-by: Milton Miller <miltonm@bga.com> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/powerpc/kernel/irq.c11
1 files changed, 2 insertions, 9 deletions
diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c
index f2fd6539d8bf..0df255414836 100644
--- a/arch/powerpc/kernel/irq.c
+++ b/arch/powerpc/kernel/irq.c
@@ -557,15 +557,8 @@ struct irq_host *irq_alloc_host(struct device_node *of_node,
557 if (revmap_type == IRQ_HOST_MAP_LEGACY) { 557 if (revmap_type == IRQ_HOST_MAP_LEGACY) {
558 if (irq_map[0].host != NULL) { 558 if (irq_map[0].host != NULL) {
559 raw_spin_unlock_irqrestore(&irq_big_lock, flags); 559 raw_spin_unlock_irqrestore(&irq_big_lock, flags);
560 /* If we are early boot, we can't free the structure, 560 of_node_put(host->of_node);
561 * too bad... 561 kfree(host);
562 * this will be fixed once slab is made available early
563 * instead of the current cruft
564 */
565 if (mem_init_done) {
566 of_node_put(host->of_node);
567 kfree(host);
568 }
569 return NULL; 562 return NULL;
570 } 563 }
571 irq_map[0].host = host; 564 irq_map[0].host = host;