diff options
author | Li Zefan <lizf@cn.fujitsu.com> | 2009-01-06 04:39:06 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-01-06 05:07:04 -0500 |
commit | 0c910d289567163dbe40ccc174b36afd1c7723bd (patch) | |
tree | 9458ac750e2f174936d7e0704d25548c110e0fa0 /kernel/sched.c | |
parent | d9be28ea9110c596a05bd2d56afa94251bd19818 (diff) |
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/sched.c')
-rw-r--r-- | kernel/sched.c | 5 |
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) | |||
6970 | } | 6970 | } |
6971 | 6971 | ||
6972 | if (!alloc_cpumask_var(&rd->span, GFP_KERNEL)) | 6972 | if (!alloc_cpumask_var(&rd->span, GFP_KERNEL)) |
6973 | goto free_rd; | 6973 | goto out; |
6974 | if (!alloc_cpumask_var(&rd->online, GFP_KERNEL)) | 6974 | if (!alloc_cpumask_var(&rd->online, GFP_KERNEL)) |
6975 | goto free_span; | 6975 | goto free_span; |
6976 | if (!alloc_cpumask_var(&rd->rto_mask, GFP_KERNEL)) | 6976 | if (!alloc_cpumask_var(&rd->rto_mask, GFP_KERNEL)) |
@@ -6986,8 +6986,7 @@ free_online: | |||
6986 | free_cpumask_var(rd->online); | 6986 | free_cpumask_var(rd->online); |
6987 | free_span: | 6987 | free_span: |
6988 | free_cpumask_var(rd->span); | 6988 | free_cpumask_var(rd->span); |
6989 | free_rd: | 6989 | out: |
6990 | kfree(rd); | ||
6991 | return -ENOMEM; | 6990 | return -ENOMEM; |
6992 | } | 6991 | } |
6993 | 6992 | ||