aboutsummaryrefslogtreecommitdiffstats
path: root/xen/net/dev.c
diff options
context:
space:
mode:
Diffstat (limited to 'xen/net/dev.c')
-rw-r--r--xen/net/dev.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/xen/net/dev.c b/xen/net/dev.c
index af23219796..ec80189b58 100644
--- a/xen/net/dev.c
+++ b/xen/net/dev.c
@@ -2111,6 +2111,7 @@ static void __make_tx_response(net_vif_t *vif,
resp->status = st;
pos = TX_RING_INC(pos);
vif->tx_resp_prod = vif->shared_idxs->tx_resp_prod = pos;
+ smp_mb(); /* Update producer before checking event threshold. */
if ( pos == vif->shared_idxs->tx_event )
{
unsigned long cpu_mask = mark_guest_event(vif->domain, _EVENT_NET);
@@ -2139,6 +2140,7 @@ static void make_rx_response(net_vif_t *vif,
resp->offset = off;
pos = RX_RING_INC(pos);
vif->rx_resp_prod = vif->shared_idxs->rx_resp_prod = pos;
+ smp_mb(); /* Update producer before checking event threshold. */
if ( pos == vif->shared_idxs->rx_event )
{
unsigned long cpu_mask = mark_guest_event(vif->domain, _EVENT_NET);