summaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorLi Zefan <lizf@cn.fujitsu.com>2009-01-06 10:39:06 +0100
committerIngo Molnar <mingo@elte.hu>2009-01-06 11:07:04 +0100
commit0c910d289567163dbe40ccc174b36afd1c7723bd (patch)
tree9458ac750e2f174936d7e0704d25548c110e0fa0 /kernel
parentMerge branches 'sched/clock', 'sched/cleanups' and 'linus' into sched/urgent (diff)
downloadlinux-0c910d289567163dbe40ccc174b36afd1c7723bd.tar.xz
linux-0c910d289567163dbe40ccc174b36afd1c7723bd.zip
sched: fix double kfree in failure path
It's not the responsibility of init_rootdomain() to free root_domain allocated by alloc_rootdomain(). Signed-off-by: Li Zefan <lizf@cn.fujitsu.com> Reviewed-by: Pekka Enberg <penberg@cs.helsinki.fi> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel')
-rw-r--r--kernel/sched.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/kernel/sched.c b/kernel/sched.c
index c5019a5dcaa4..973f97362ceb 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -6970,7 +6970,7 @@ static int init_rootdomain(struct root_domain *rd, bool bootmem)
}
if (!alloc_cpumask_var(&rd->span, GFP_KERNEL))
- goto free_rd;
+ goto out;
if (!alloc_cpumask_var(&rd->online, GFP_KERNEL))
goto free_span;
if (!alloc_cpumask_var(&rd->rto_mask, GFP_KERNEL))
@@ -6986,8 +6986,7 @@ free_online:
free_cpumask_var(rd->online);
free_span:
free_cpumask_var(rd->span);
-free_rd:
- kfree(rd);
+out:
return -ENOMEM;
}