diff options
author | Andreas Herrmann <andreas.herrmann3@amd.com> | 2010-08-27 05:20:07 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2010-09-05 08:35:49 -0400 |
commit | 1389298f7d14f179c2fa4b4b343079bd56082c70 (patch) | |
tree | 9ef25a7bb32f7358b46c200668ad26d64fead8c7 /arch | |
parent | 29bc17ecb856ffb2b47c7009a71971c6f9334205 (diff) |
x86, mcheck: Avoid duplicate sysfs links/files for thresholding banks
kobject_add_internal failed for threshold_bank2 with -EEXIST,
don't try to register things with the same name in the same
directory:
Pid: 1, comm: swapper Tainted: G W 2.6.31 #1
Call Trace:
[<ffffffff81161b07>] ? kobject_add_internal+0x156/0x180
[<ffffffff81161cc0>] ? kobject_add+0x66/0x6b
[<ffffffff81161793>] ? kobject_init+0x42/0x82
[<ffffffff81161cf9>] ? kobject_create_and_add+0x34/0x63
[<ffffffff81393963>] ? threshold_create_bank+0x14f/0x259
[<ffffffff8139310a>] ? mce_create_device+0x8d/0x1b8
[<ffffffff81646497>] ? threshold_init_device+0x3f/0x80
[<ffffffff81646458>] ? threshold_init_device+0x0/0x80
[<ffffffff81009050>] ? do_one_initcall+0x4f/0x143
[<ffffffff816413a0>] ? kernel_init+0x14c/0x1a2
[<ffffffff8100c8da>] ? child_rip+0xa/0x20
[<ffffffff81641254>] ? kernel_init+0x0/0x1a2
[<ffffffff8100c8d0>] ? child_rip+0x0/0x20
kobject_create_and_add: kobject_add error: -17
(Probably the for_each_cpu loop should be entirely removed.)
Signed-off-by: Andreas Herrmann <andreas.herrmann3@amd.com>
LKML-Reference: <20100827092006.GB5348@loge.amd.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/kernel/cpu/mcheck/mce_amd.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/x86/kernel/cpu/mcheck/mce_amd.c b/arch/x86/kernel/cpu/mcheck/mce_amd.c index 224392d8fe8c..5e975298fa81 100644 --- a/arch/x86/kernel/cpu/mcheck/mce_amd.c +++ b/arch/x86/kernel/cpu/mcheck/mce_amd.c | |||
@@ -530,7 +530,7 @@ static __cpuinit int threshold_create_bank(unsigned int cpu, unsigned int bank) | |||
530 | err = -ENOMEM; | 530 | err = -ENOMEM; |
531 | goto out; | 531 | goto out; |
532 | } | 532 | } |
533 | if (!alloc_cpumask_var(&b->cpus, GFP_KERNEL)) { | 533 | if (!zalloc_cpumask_var(&b->cpus, GFP_KERNEL)) { |
534 | kfree(b); | 534 | kfree(b); |
535 | err = -ENOMEM; | 535 | err = -ENOMEM; |
536 | goto out; | 536 | goto out; |
@@ -543,7 +543,7 @@ static __cpuinit int threshold_create_bank(unsigned int cpu, unsigned int bank) | |||
543 | #ifndef CONFIG_SMP | 543 | #ifndef CONFIG_SMP |
544 | cpumask_setall(b->cpus); | 544 | cpumask_setall(b->cpus); |
545 | #else | 545 | #else |
546 | cpumask_copy(b->cpus, c->llc_shared_map); | 546 | cpumask_set_cpu(cpu, b->cpus); |
547 | #endif | 547 | #endif |
548 | 548 | ||
549 | per_cpu(threshold_banks, cpu)[bank] = b; | 549 | per_cpu(threshold_banks, cpu)[bank] = b; |