Thread (43 messages) 43 messages, 5 authors, 2021-11-11

Re: [PATCH v3 01/16] perf: Ensure perf_guest_cbs aren't reloaded between !NULL check and deref

From: Sean Christopherson <seanjc@google.com>
Date: 2021-11-11 00:40:00
Also in: kvmarm, linux-arm-kernel, linux-perf-users, linux-riscv, lkml, xen-devel

On Wed, Nov 10, 2021, Paolo Bonzini wrote:
On 11/4/21 15:18, Sean Christopherson wrote:
quoted
If I'm interpeting Paolo's suggestion
correctly, he's pointing out that oustanding stores to the function pointers in
@cbs need to complete before assigning a non-NULL pointer to perf_guest_cbs,
otherwise a perf event handler may see a valid pointer with half-baked callbacks.

I think smp_store_release() with a comment would be appropriate, assuming my
above interpretation is correct.
Yes, exactly.  It should even be rcu_assign_pointer(), matching the
synchronize_rcu()
And perf_guest_cbs should be tagged __rcu and accessed accordingly.  Which is
effectively what this version (poorly) implemented with a homebrewed mix of
{READ,WRITE}_ONCE, lockdep(), and synchronize_rcu().
in patch 1 (and the change can be done in patch 1, too).
Ya, the change needs to go into patch 1.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help