Message ID | 1580084042-11598-3-git-send-email-john.fastabend@gmail.com |
---|---|
State | Accepted |
Delegated to: | BPF Maintainers |
Headers | show |
Series | XDP flush cleanups | expand |
On Sun, Jan 26, 2020 at 04:14:01PM -0800, John Fastabend wrote: > virtio_net currently relies on rcu critical section to access the xdp > program in its xdp_xmit handler. However, the pointer to the xdp program > is only used to do a NULL pointer comparison to determine if xdp is > enabled or not. > > Use rcu_access_pointer() instead of rcu_dereference() to reflect this. > Then later when we drop rcu_read critical section virtio_net will not > need in special handling. > > Acked-by: Jesper Dangaard Brouer <brouer@redhat.com> > Signed-off-by: John Fastabend <john.fastabend@gmail.com> Acked-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index 4d7d5434..945eabc 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c @@ -501,7 +501,7 @@ static int virtnet_xdp_xmit(struct net_device *dev, /* Only allow ndo_xdp_xmit if XDP is loaded on dev, as this * indicate XDP resources have been successfully allocated. */ - xdp_prog = rcu_dereference(rq->xdp_prog); + xdp_prog = rcu_access_pointer(rq->xdp_prog); if (!xdp_prog) return -ENXIO;