aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/apic/io_apic.c
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2010-10-06 22:07:03 +0200
committerThomas Gleixner <tglx@linutronix.de>2010-10-12 16:53:39 +0200
commit6e2fff50a5bd72a3f9e6f3ef6e9137efddb2d580 (patch)
tree1c637e0fb24f59a09cfe008923d5512797cb9f83 /arch/x86/kernel/apic/io_apic.c
parentx86: ioapic: Cleanup some more (diff)
downloadlinux-dev-6e2fff50a5bd72a3f9e6f3ef6e9137efddb2d580.tar.xz
linux-dev-6e2fff50a5bd72a3f9e6f3ef6e9137efddb2d580.zip
x86: ioapic: Cleanup get_one_free_irq_cfg()
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to '')
-rw-r--r--arch/x86/kernel/apic/io_apic.c23
1 files changed, 11 insertions, 12 deletions
diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
index 43030995dcce..452f781a042e 100644
--- a/arch/x86/kernel/apic/io_apic.c
+++ b/arch/x86/kernel/apic/io_apic.c
@@ -185,19 +185,18 @@ static struct irq_cfg *get_one_free_irq_cfg(int node)
struct irq_cfg *cfg;
cfg = kzalloc_node(sizeof(*cfg), GFP_ATOMIC, node);
- if (cfg) {
- if (!zalloc_cpumask_var_node(&cfg->domain, GFP_ATOMIC, node)) {
- kfree(cfg);
- cfg = NULL;
- } else if (!zalloc_cpumask_var_node(&cfg->old_domain,
- GFP_ATOMIC, node)) {
- free_cpumask_var(cfg->domain);
- kfree(cfg);
- cfg = NULL;
- }
- }
-
+ if (!cfg)
+ return NULL;
+ if (!zalloc_cpumask_var_node(&cfg->domain, GFP_ATOMIC, node))
+ goto out_cfg;
+ if (!zalloc_cpumask_var_node(&cfg->old_domain, GFP_ATOMIC, node))
+ goto out_domain;
return cfg;
+out_domain:
+ free_cpumask_var(cfg->domain);
+out_cfg:
+ kfree(cfg);
+ return NULL;
}
int arch_init_chip_data(struct irq_desc *desc, int node)