Re: 2.6.9-rc1-mm5: TCP oopses

David S. Miller
2004-09-14T04:55:45Z

On Tue, 14 Sep 2004 13:34:20 +1000
Herbert Xu <herbert@gondor.apana.org.au> wrote:

> > @@ -968,11 +972,17 @@
> > return -EAGAIN;
> >
> > if (skb->len > cur_mss) {
> > + int old_factor = TCP_SKB_CB(skb)->tso_factor;
> > + int new_factor;
> > +
> > if (tcp_fragment(sk, skb, cur_mss))
> > return -ENOMEM; /* We'll try again later. */
> >
> > /* New SKB created, account for it. */
> > - tcp_inc_pcount(&tp->packets_out, skb);
> > + new_factor = TCP_SKB_CB(skb)->tso_factor;
> > + tcp_dec_pcount_explicit(&tp->packets_out,
> > + new_factor - old_factor);
>
> That should be tcp_inc_pcount_explicit.

Better fix is to transpose the factors in the subtraction.
That's what I was trying to do here.

Good eyes Herbert.