Skip to content

Commit

Permalink
xen/netback: only non-freed SKB is queued into tx_queue
Browse files Browse the repository at this point in the history
After SKB is queued into tx_queue, it will be freed if request_gop is NULL.
However, no dequeue action is called in this situation, it is likely that
tx_queue constains freed SKB. This patch should fix this issue, and it is
based on 3.5.0-rc4+.

This issue is found through code inspection, no bug is seen with it currently.
I run netperf test for several hours, and no network regression was found.

Signed-off-by: Annie Li <annie.li@oracle.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Annie Li authored and David S. Miller committed Jun 29, 2012
1 parent 7fa8ad6 commit 1e0b6ea
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions drivers/net/xen-netback/netback.c
Original file line number Diff line number Diff line change
Expand Up @@ -1363,8 +1363,6 @@ static unsigned xen_netbk_tx_build_gops(struct xen_netbk *netbk)
INVALID_PENDING_IDX);
}

__skb_queue_tail(&netbk->tx_queue, skb);

netbk->pending_cons++;

request_gop = xen_netbk_get_requests(netbk, vif,
Expand All @@ -1376,6 +1374,8 @@ static unsigned xen_netbk_tx_build_gops(struct xen_netbk *netbk)
}
gop = request_gop;

__skb_queue_tail(&netbk->tx_queue, skb);

vif->tx.req_cons = idx;
xen_netbk_check_rx_xenvif(vif);

Expand Down

0 comments on commit 1e0b6ea

Please sign in to comment.