| Submitter | Ilpo Järvinen |
|---|---|
| Date | July 16, 2010, 1:19 p.m. |
| Message ID | <alpine.DEB.2.00.1007161602510.13946@melkinpaasi.cs.helsinki.fi> |
| Download | mbox | patch |
| Permalink | /patch/59104/ |
| State | Superseded |
| Delegated to: | David Miller |
| Headers | show |
Comments
I ran tests for about 2 hours with this patch and I got no output from the debug patch. This seems to have solved at least my problem :) Thanks! > [PATCH] tcp: fix crash in tcp_xmit_retransmit_queue > > It can happen that there are no packets in queue while calling > tcp_xmit_retransmit_queue(). tcp_write_queue_head() then returns > NULL and that gets deref'ed to get sacked into a local var. > > There is no work to do if no packets are outstanding so we just > exit early. > > There may still be another bug affecting this same function. > > Signed-off-by: Ilpo Järvinen<ilpo.jarvinen@helsinki.fi> > Reported-by: Lennart Schulte<lennart.schulte@nets.rwth-aachen.de> > --- > net/ipv4/tcp_output.c | 3 +++ > 1 files changed, 3 insertions(+), 0 deletions(-) > > diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c > index b4ed957..7ed9dc1 100644 > --- a/net/ipv4/tcp_output.c > +++ b/net/ipv4/tcp_output.c > @@ -2208,6 +2208,9 @@ void tcp_xmit_retransmit_queue(struct sock *sk) > int mib_idx; > int fwd_rexmitting = 0; > > + if (!tp->packets_out) > + return; > + > if (!tp->lost_out) > tp->retransmit_high = tp->snd_una; > > -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Patch
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c index b4ed957..7ed9dc1 100644 --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c @@ -2208,6 +2208,9 @@ void tcp_xmit_retransmit_queue(struct sock *sk) int mib_idx; int fwd_rexmitting = 0; + if (!tp->packets_out) + return; + if (!tp->lost_out) tp->retransmit_high = tp->snd_una;