Commit b126047f authored by Paolo Abeni's avatar Paolo Abeni

Merge branch 'xen-netfront-xsa-403-follow-on'

Jan Beulich says:

====================
xen-netfront: XSA-403 follow-on

While investigating the XSA, I did notice a few more things. The two
patches aren't really dependent on one another.

1: remove leftover call to xennet_tx_buf_gc()
2: re-order error checks in xennet_get_responses()
====================

Link: https://lore.kernel.org/r/7fca0e44-43b5-8448-3653-249d117dc084@suse.comSigned-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parents 9b633670 06673c21
...@@ -1043,16 +1043,6 @@ static int xennet_get_responses(struct netfront_queue *queue, ...@@ -1043,16 +1043,6 @@ static int xennet_get_responses(struct netfront_queue *queue,
} }
for (;;) { for (;;) {
if (unlikely(rx->status < 0 ||
rx->offset + rx->status > XEN_PAGE_SIZE)) {
if (net_ratelimit())
dev_warn(dev, "rx->offset: %u, size: %d\n",
rx->offset, rx->status);
xennet_move_rx_slot(queue, skb, ref);
err = -EINVAL;
goto next;
}
/* /*
* This definitely indicates a bug, either in this driver or in * This definitely indicates a bug, either in this driver or in
* the backend driver. In future this should flag the bad * the backend driver. In future this should flag the bad
...@@ -1066,6 +1056,16 @@ static int xennet_get_responses(struct netfront_queue *queue, ...@@ -1066,6 +1056,16 @@ static int xennet_get_responses(struct netfront_queue *queue,
goto next; goto next;
} }
if (unlikely(rx->status < 0 ||
rx->offset + rx->status > XEN_PAGE_SIZE)) {
if (net_ratelimit())
dev_warn(dev, "rx->offset: %u, size: %d\n",
rx->offset, rx->status);
xennet_move_rx_slot(queue, skb, ref);
err = -EINVAL;
goto next;
}
if (!gnttab_end_foreign_access_ref(ref)) { if (!gnttab_end_foreign_access_ref(ref)) {
dev_alert(dev, dev_alert(dev,
"Grant still in use by backend domain\n"); "Grant still in use by backend domain\n");
...@@ -2464,10 +2464,6 @@ static int xennet_connect(struct net_device *dev) ...@@ -2464,10 +2464,6 @@ static int xennet_connect(struct net_device *dev)
if (queue->tx_irq != queue->rx_irq) if (queue->tx_irq != queue->rx_irq)
notify_remote_via_irq(queue->rx_irq); notify_remote_via_irq(queue->rx_irq);
spin_lock_irq(&queue->tx_lock);
xennet_tx_buf_gc(queue);
spin_unlock_irq(&queue->tx_lock);
spin_lock_bh(&queue->rx_lock); spin_lock_bh(&queue->rx_lock);
xennet_alloc_rx_buffers(queue); xennet_alloc_rx_buffers(queue);
spin_unlock_bh(&queue->rx_lock); spin_unlock_bh(&queue->rx_lock);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment