[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] [NET] back: Initialise first fragment properly
# HG changeset patch # User kfraser@xxxxxxxxxxxxxxxxxxxxx # Node ID 83003532d71ff0a8da04e01db59880104ad890c7 # Parent 3e75d9b1d55656eb16823d277c6609753a847ae4 [NET] back: Initialise first fragment properly The first fragment is used to store the pending_idx of the leading txreq if it doesn't fit in the head area. When it does fit into the head we need to ensure that the first fragment contains a value that is not equal to pending_idx as that's what we use to distinguish between the two cases in a a number of places. This patch sets the first fragment to ~0 which is not equal to any valid pending_idx. Without this initialisation, we may double-free a pending_idx if the first fragment happened to contain a value equal to it (this usually happened with pending_idx 0). Signed-off-by: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> --- linux-2.6-xen-sparse/drivers/xen/netback/netback.c | 3 +++ 1 files changed, 3 insertions(+) diff -r 3e75d9b1d556 -r 83003532d71f linux-2.6-xen-sparse/drivers/xen/netback/netback.c --- a/linux-2.6-xen-sparse/drivers/xen/netback/netback.c Wed Aug 16 18:20:03 2006 +0100 +++ b/linux-2.6-xen-sparse/drivers/xen/netback/netback.c Thu Aug 17 11:32:39 2006 +0100 @@ -1218,6 +1218,9 @@ static void net_tx_action(unsigned long skb_shinfo(skb)->nr_frags++; skb_shinfo(skb)->frags[0].page = (void *)(unsigned long)pending_idx; + } else { + /* Discriminate from any valid pending_idx value. */ + skb_shinfo(skb)->frags[0].page = (void *)~0UL; } __skb_queue_tail(&tx_queue, skb); _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |