On Wed, Oct 17, 2018 at 04:41:56PM +0200, Daniel Borkmann wrote: > +static __u64 bpf_perf_read_head(struct perf_event_mmap_page *header) > +{ > + __u64 data_head = READ_ONCE(header->data_head); > + > + smp_rmb(); > + return data_head; > +} > + > +static void bpf_perf_write_tail(struct perf_event_mmap_page *header, > + __u64 data_tail) > +{ > + smp_mb(); > + header->data_tail = data_tail; > +}
Same coments, either smp_load_acquire()/smp_store_release() or at the very least a WRITE_ONCE() there.