OSDN Git Service

xsk: avoid store-tearing when assigning queues
authorBjörn Töpel <bjorn.topel@intel.com>
Wed, 4 Sep 2019 11:49:10 +0000 (13:49 +0200)
committerDaniel Borkmann <daniel@iogearbox.net>
Thu, 5 Sep 2019 12:11:52 +0000 (14:11 +0200)
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.

Acked-by: Jonathan Lemon <jonathan.lemon@gmail.com>
Fixes: 37b076933a8e ("xsk: add missing write- and data-dependency barrier")
Signed-off-by: Björn Töpel <bjorn.topel@intel.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
net/xdp/xsk.c

index 187fd15..271d8d3 100644 (file)
@@ -434,7 +434,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;
 }