Message ID | 20190822091306.20581-2-bjorn.topel@gmail.com |
---|---|
State | Changes Requested |
Delegated to: | BPF Maintainers |
Headers | show |
Series | xsk: various CPU barrier and {READ, WRITE}_ONCE fixes | expand |
On Thu, 22 Aug 2019 at 15:26, Hillf Danton <hdanton@sina.com> wrote: > > > > > > /* Make sure queue is ready before it can be seen by others */ > > > smp_wmb(); > > > > Hehe, who put mb here and for what? > That was from an earlier commit, and it's a barrier paired with the lock-less reading of queues in xsk_mmap. Uhm... not sure I answered your question? Björn > > > >- *queue = q; > > >+ WRITE_ONCE(*queue, q); > > > return 0; > >
On 22 Aug 2019, at 2:13, Björn Töpel wrote: > From: Björn Töpel <bjorn.topel@intel.com> > > Use WRITE_ONCE when doing the store of tx, rx, fq, and cq, to avoid > potential store-tearing. These members are read outside of the control > mutex in the mmap implementation. > > Fixes: 37b076933a8e ("xsk: add missing write- and data-dependency barrier") > Signed-off-by: Björn Töpel <bjorn.topel@intel.com> Acked-by: Jonathan Lemon <jonathan.lemon@gmail.com>
diff --git a/net/xdp/xsk.c b/net/xdp/xsk.c index ee4428a892fa..f3351013c2a5 100644 --- a/net/xdp/xsk.c +++ b/net/xdp/xsk.c @@ -409,7 +409,7 @@ static int xsk_init_queue(u32 entries, struct xsk_queue **queue, /* Make sure queue is ready before it can be seen by others */ smp_wmb(); - *queue = q; + WRITE_ONCE(*queue, q); return 0; }