|
@@ -482,6 +482,8 @@ static void xenvif_rx_action(struct xenvif *vif)
|
|
|
|
|
|
while ((skb = skb_dequeue(&vif->rx_queue)) != NULL) {
|
|
|
RING_IDX max_slots_needed;
|
|
|
+ RING_IDX old_req_cons;
|
|
|
+ RING_IDX ring_slots_used;
|
|
|
int i;
|
|
|
|
|
|
/* We need a cheap worse case estimate for the number of
|
|
@@ -530,8 +532,12 @@ static void xenvif_rx_action(struct xenvif *vif)
|
|
|
vif->rx_last_skb_slots = 0;
|
|
|
|
|
|
sco = (struct skb_cb_overlay *)skb->cb;
|
|
|
+
|
|
|
+ old_req_cons = vif->rx.req_cons;
|
|
|
sco->meta_slots_used = xenvif_gop_skb(skb, &npo);
|
|
|
- BUG_ON(sco->meta_slots_used > max_slots_needed);
|
|
|
+ ring_slots_used = vif->rx.req_cons - old_req_cons;
|
|
|
+
|
|
|
+ BUG_ON(ring_slots_used > max_slots_needed);
|
|
|
|
|
|
__skb_queue_tail(&rxq, skb);
|
|
|
}
|