Thread (12 messages) 12 messages, 4 authors, 2008-06-14

Re: [PATCH 1/3] virtio: fix virtio_net xmit of freed skb bug

From: Jeff Garzik <hidden>
Date: 2008-06-13 19:57:11

Mark McLoughlin wrote:
On Thu, 2008-05-29 at 16:34 +1000, Rusty Russell wrote:
quoted
On Tuesday 27 May 2008 21:06:26 Mark McLoughlin wrote:
quoted
On Mon, 2008-05-26 at 17:42 +1000, Rusty Russell wrote:
quoted
If we fail to transmit a packet, we assume the queue is full and put
the skb into last_xmit_skb.  However, if more space frees up before we
xmit it, we loop, and the result can be transmitting the same skb twice.

Fix is simple: set skb to NULL if we've used it in some way, and check
before sending.
Great! It's a corner case, but it's no more complicated to do it your way.

Minor mod, I find it clearer to have the vi->last_xmit_skb = NULL; under
the branch:

Subject: [PATCH] virtio_net: Delay dropping tx skbs
Date: Tue, 27 May 2008 12:06:26 +0100
From: Mark McLoughlin <redacted>

Currently we drop the skb in start_xmit() if we have a
queued buffer and fail to transmit it.

However, if we delay dropping it until we've stopped the
queue and enabled the tx notification callback, then there
is a chance space might become available for it.
Hmm, we lost this one somewhere along the way ...
can someone resend?

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help