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: Mon, 10 Feb 2020 10:46:16 +0100 From: Peter Zijlstra <peterz@...radead.org> To: Mathieu Desnoyers <mathieu.desnoyers@...icios.com> Cc: "Joel Fernandes, Google" <joel@...lfernandes.org>, linux-kernel <linux-kernel@...r.kernel.org>, Greg Kroah-Hartman <gregkh@...uxfoundation.org>, "Gustavo A. R. Silva" <gustavo@...eddedor.com>, Ingo Molnar <mingo@...hat.com>, Richard Fontana <rfontana@...hat.com>, rostedt <rostedt@...dmis.org>, Thomas Gleixner <tglx@...utronix.de>, paulmck <paulmck@...nel.org>, Josh Triplett <josh@...htriplett.org>, Lai Jiangshan <jiangshanlai@...il.com>, Arnaldo Carvalho de Melo <arnaldo.melo@...il.com> Subject: Re: [RFC 0/3] Revert SRCU from tracepoint infrastructure On Sat, Feb 08, 2020 at 11:31:25AM -0500, Mathieu Desnoyers wrote: > ----- On Feb 7, 2020, at 3:56 PM, Joel Fernandes, Google joel@...lfernandes.org wrote: > > > Hi, > > These patches remove SRCU usage from tracepoints. The reason for proposing the > > reverts is because the whole point of SRCU was to avoid having to call > > rcu_irq_enter_irqson(). However this was added back in 865e63b04e9b2 ("tracing: > > Add back in rcu_irq_enter/exit_irqson() for rcuidle tracepoints") because perf > > was breaking.. > > I think the original patch re-enabling the rcu_irq_enter/exit_irqson() is a > tracepoint band-aid over what should actually been fixed within perf instead. > > Perf should not do rcu_read_lock/unlock()/synchronize_rcu(), but rather use > tracepoint_synchronize_unregister() to match the read-side provided by > tracepoints. > > If perf can then just rely on the underlying synchronization provided by each > instrumentation providers (tracepoint, kprobe, ...) and not explicitly add its own > unneeded synchronization on top (e.g. rcu_read_lock/unlock), then it should simplify > all this. It can't. At this point it doesn't know where the event came from. Also, the whole perf stuff is per definition non-preemptible, as it needs to run from NMI context. Furthermore, using srcu would be detrimental, because of how it has smp_mb() in the read side primitives. The best we can do is move that rcu_irq_enter/exit_*() crud into the perf tracepoint glue I suppose.
Powered by blists - more mailing lists