]> err.no Git - linux-2.6/commitdiff
sched: domain sysctl fixes: do not crash on allocation failure
authorMilton Miller <miltonm@bga.com>
Mon, 15 Oct 2007 15:00:19 +0000 (17:00 +0200)
committerIngo Molnar <mingo@elte.hu>
Mon, 15 Oct 2007 15:00:19 +0000 (17:00 +0200)
Now that we are calling this at runtime, a more relaxed error path is
suggested.  If an allocation fails, we just register the partial table,
which will show empty directories.

Signed-off-by: Milton Miller <miltonm@bga.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
kernel/sched.c

index a2dd054355343c8586ec8807383c527b488041e5..f40fe027723f7473a1ad91ec0fce2aa48121855e 100644 (file)
@@ -5245,8 +5245,6 @@ static struct ctl_table *sd_alloc_ctl_entry(int n)
        struct ctl_table *entry =
                kcalloc(n, sizeof(struct ctl_table), GFP_KERNEL);
 
-       BUG_ON(!entry);
-
        return entry;
 }
 
@@ -5279,6 +5277,9 @@ sd_alloc_ctl_domain_table(struct sched_domain *sd)
 {
        struct ctl_table *table = sd_alloc_ctl_entry(12);
 
+       if (table == NULL)
+               return NULL;
+
        set_table_entry(&table[0], "min_interval", &sd->min_interval,
                sizeof(long), 0644, proc_doulongvec_minmax);
        set_table_entry(&table[1], "max_interval", &sd->max_interval,
@@ -5316,6 +5317,8 @@ static ctl_table *sd_alloc_ctl_cpu_table(int cpu)
        for_each_domain(cpu, sd)
                domain_num++;
        entry = table = sd_alloc_ctl_entry(domain_num + 1);
+       if (table == NULL)
+               return NULL;
 
        i = 0;
        for_each_domain(cpu, sd) {
@@ -5336,6 +5339,9 @@ static void register_sched_domain_sysctl(void)
        struct ctl_table *entry = sd_alloc_ctl_entry(cpu_num + 1);
        char buf[32];
 
+       if (entry == NULL)
+               return;
+
        sd_ctl_dir[0].child = entry;
 
        for_each_online_cpu(i) {