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: Wed, 18 Nov 2009 18:38:15 -0500 From: Mathieu Desnoyers <mathieu.desnoyers@...ymtl.ca> To: Jason Baron <jbaron@...hat.com> Cc: linux-kernel@...r.kernel.org, mingo@...e.hu, hpa@...or.com, tglx@...utronix.de, rostedt@...dmis.org, andi@...stfloor.org, roland@...hat.com, rth@...hat.com, mhiramat@...hat.com, "Paul E. McKenney" <paulmck@...ux.vnet.ibm.com> Subject: [PATCH] notifier atomic call chain notrace * Jason Baron (jbaron@...hat.com) wrote: > Note that this is conditional on gcc >= 4.5. Also there is a !lockdep > condition. This is b/c the die_notifier takes an rcu_read_lock() on the > int3 trap, which then causes another one etc. Since, we aren't going to be > installing removing the handler, the rcu_read_lock() could be avoided for this > case with some code restructuring. > [snip] Would the following patch help ? I use it in the LTTng tree to alleviate this problem. notifier atomic call chain notrace In LTTng, being able to use the atomic notifier from cpu idle entry to ensure the tracer flush the last events in the current subbuffer requires the rcu read-side to be marked "notrace", otherwise it can end up calling back into lockdep and the tracer. Also apply to the the die notifier. Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@...ymtl.ca> CC: "Paul E. McKenney" <paulmck@...ux.vnet.ibm.com> CC: Jason Baron <jbaron@...hat.com> CC: mingo@...e.hu --- kernel/notifier.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) Index: linux-2.6-lttng/kernel/notifier.c =================================================================== --- linux-2.6-lttng.orig/kernel/notifier.c 2009-11-12 17:58:56.000000000 -0500 +++ linux-2.6-lttng/kernel/notifier.c 2009-11-12 18:03:28.000000000 -0500 @@ -148,7 +148,7 @@ int atomic_notifier_chain_unregister(str spin_lock_irqsave(&nh->lock, flags); ret = notifier_chain_unregister(&nh->head, n); spin_unlock_irqrestore(&nh->lock, flags); - synchronize_rcu(); + synchronize_sched(); return ret; } EXPORT_SYMBOL_GPL(atomic_notifier_chain_unregister); @@ -178,9 +178,9 @@ int __kprobes __atomic_notifier_call_cha { int ret; - rcu_read_lock(); + rcu_read_lock_sched_notrace(); ret = notifier_call_chain(&nh->head, val, v, nr_to_call, nr_calls); - rcu_read_unlock(); + rcu_read_unlock_sched_notrace(); return ret; } EXPORT_SYMBOL_GPL(__atomic_notifier_call_chain); -- Mathieu Desnoyers OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68 -- 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