lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Tue, 11 Mar 2014 02:04:45 +0530 From: "Srivatsa S. Bhat" <srivatsa.bhat@...ux.vnet.ibm.com> To: paulus@...ba.org, oleg@...hat.com, mingo@...nel.org, rjw@...ysocki.net, rusty@...tcorp.com.au, peterz@...radead.org, tglx@...utronix.de, akpm@...ux-foundation.org Cc: paulmck@...ux.vnet.ibm.com, tj@...nel.org, walken@...gle.com, ego@...ux.vnet.ibm.com, linux@....linux.org.uk, linux-kernel@...r.kernel.org, linux-arch@...r.kernel.org, linux-pm@...r.kernel.org, linuxppc-dev@...abs.org, srivatsa.bhat@...ux.vnet.ibm.com, Tony Luck <tony.luck@...el.com>, Fenghua Yu <fenghua.yu@...el.com>, Ingo Molnar <mingo@...nel.org>, linux-ia64@...r.kernel.org, "Srivatsa S. Bhat" <srivatsa.bhat@...ux.vnet.ibm.com> Subject: [PATCH v3 05/52] ia64, salinfo: Fix hotplug callback registration Subsystems that want to register CPU hotplug callbacks, as well as perform initialization for the CPUs that are already online, often do it as shown below: get_online_cpus(); for_each_online_cpu(cpu) init_cpu(cpu); register_cpu_notifier(&foobar_cpu_notifier); put_online_cpus(); This is wrong, since it is prone to ABBA deadlocks involving the cpu_add_remove_lock and the cpu_hotplug.lock (when running concurrently with CPU hotplug operations). Instead, the correct and race-free way of performing the callback registration is: cpu_notifier_register_begin(); for_each_online_cpu(cpu) init_cpu(cpu); /* Note the use of the double underscored version of the API */ __register_cpu_notifier(&foobar_cpu_notifier); cpu_notifier_register_done(); Fix the salinfo code in ia64 by using this latter form of callback registration. Cc: Tony Luck <tony.luck@...el.com> Cc: Fenghua Yu <fenghua.yu@...el.com> Cc: Ingo Molnar <mingo@...nel.org> Cc: linux-ia64@...r.kernel.org Signed-off-by: Srivatsa S. Bhat <srivatsa.bhat@...ux.vnet.ibm.com> --- arch/ia64/kernel/salinfo.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/arch/ia64/kernel/salinfo.c b/arch/ia64/kernel/salinfo.c index 960a396..ee9719e 100644 --- a/arch/ia64/kernel/salinfo.c +++ b/arch/ia64/kernel/salinfo.c @@ -635,6 +635,8 @@ salinfo_init(void) (void *)salinfo_entries[i].feature); } + cpu_notifier_register_begin(); + for (i = 0; i < ARRAY_SIZE(salinfo_log_name); i++) { data = salinfo_data + i; data->type = i; @@ -669,7 +671,9 @@ salinfo_init(void) salinfo_timer.function = &salinfo_timeout; add_timer(&salinfo_timer); - register_hotcpu_notifier(&salinfo_cpu_notifier); + __register_hotcpu_notifier(&salinfo_cpu_notifier); + + cpu_notifier_register_done(); return 0; } -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists