tech-net archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: panic: tcp_output REXMT



Manuel Bouyer wrote:
But I don't understand how it could cause a tcp_setpersist() panic. If I understand it properly, we can't have TCPT_REXMT and TCPT_PERSIST armed
at the same time. Here the path comes from TCPT_PERSIST's handler so
it was armed. Nothing arms TCPT_PERSIST outside of tcp_setpersist(),
so TCPT_REXMT has been armed after TCPT_PERSIST was.

syn_cache_get() can arm TCPT_REXMT without checking TCPT_PERSIST.
I don't know if TCPT_PERSIST could have been armed before at this point.

I couldn't find other places where TCPT_REXMT would be armed without
checking TCPT_PERSIST.
Without having enough time atm to look into this thoroughly just now:
It looks like tcp_timer_rexmt() can also (re-)arm the retransmit timer.
I'm easily confused by the fact that counter-intuitively, TCP_TIMER_ISARMED() doesn't mean "the timer is running and going to fire any moment", but "the timer has been armed in the past and not disarmed since".

Would it be an option for you to try the patch (modified as yamt@ wrote) and check whether the panic persists?



Home | Main Index | Thread Index | Old Index