From: t_jeang Date: Tue, 6 Jan 2009 12:06:02 +0000 (+0000) Subject: It is possible for a frontend to generate a TSO request which doesn't X-Git-Tag: netback-dont-get-stuck-in-state-closed X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=d8edb5e424bb8555eb66446be9f842d3aed3b95e;p=xenclient%2Fkernel.git It is possible for a frontend to generate a TSO request which doesn't actually need segmentation (i.e. with size < MTU). Make sure this doesn't crash the backend. --- diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c index f8c5cff9..33bd270c 100644 --- a/net/ipv4/tcp.c +++ b/net/ipv4/tcp.c @@ -2214,7 +2214,7 @@ struct sk_buff *tcp_tso_segment(struct sk_buff *skb, int features) th = skb->h.th; seq = ntohl(th->seq); - do { + while (skb->next) { th->fin = th->psh = 0; th->check = ~csum_fold(th->check + delta); @@ -2228,7 +2228,7 @@ struct sk_buff *tcp_tso_segment(struct sk_buff *skb, int features) th->seq = htonl(seq); th->cwr = 0; - } while (skb->next); + } delta = htonl(oldlen + (skb->tail - skb->h.raw) + skb->data_len); th->check = ~csum_fold(th->check + delta);