From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peter Zijlstra Subject: Re: [PATCH bpf-next 2/3] tools, perf: use smp_{rmb,mb} barriers instead of {rmb,mb} Date: Wed, 17 Oct 2018 17:50:50 +0200 Message-ID: <20181017155050.GM3121@hirez.programming.kicks-ass.net> References: <20181017144156.16639-1-daniel@iogearbox.net> <20181017144156.16639-3-daniel@iogearbox.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: alexei.starovoitov@gmail.com, paulmck@linux.vnet.ibm.com, will.deacon@arm.com, acme@redhat.com, yhs@fb.com, john.fastabend@gmail.com, netdev@vger.kernel.org To: Daniel Borkmann Return-path: Received: from bombadil.infradead.org ([198.137.202.133]:54214 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727013AbeJQXrR (ORCPT ); Wed, 17 Oct 2018 19:47:17 -0400 Content-Disposition: inline In-Reply-To: <20181017144156.16639-3-daniel@iogearbox.net> Sender: netdev-owner@vger.kernel.org List-ID: On Wed, Oct 17, 2018 at 04:41:55PM +0200, Daniel Borkmann wrote: > @@ -73,7 +73,8 @@ static inline u64 perf_mmap__read_head(struct perf_mmap *mm) > { > struct perf_event_mmap_page *pc = mm->base; > u64 head = READ_ONCE(pc->data_head); > - rmb(); > + > + smp_rmb(); > return head; > } > > @@ -84,7 +85,7 @@ static inline void perf_mmap__write_tail(struct perf_mmap *md, u64 tail) > /* > * ensure all reads are done before we write the tail out. > */ > - mb(); > + smp_mb(); > pc->data_tail = tail; Ideally that would be a WRITE_ONCE() to avoid store tearing. Alternatively, I think we can use smp_store_release() here, all we care about is that the prior loads stay prior. Similarly, I suppose, we could use smp_load_acquire() for the data_head load above. > } > > -- > 2.9.5 >