]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Mask netisrs during softtty isrs. This may fix PR 798. SLIP and PPP
authorBruce Evans <bde@FreeBSD.org>
Mon, 30 Oct 1995 17:01:37 +0000 (17:01 +0000)
committerBruce Evans <bde@FreeBSD.org>
Mon, 30 Oct 1995 17:01:37 +0000 (17:01 +0000)
commit7788eaeb2fd03a0703279d32225c23c54f30dc3f
treef1840529e319ca94acc543c867995c42109eaa7e
parent7226d4fb3b3b29cfcd29821718fcab16284741e2
Mask netisrs during softtty isrs.  This may fix PR 798.  SLIP and PPP
line discipline interrupt handlers more or less expect to be called at
spltty() == splimp(), although they have internal splimp()s that are
bogus if this expectation is satisfied.  They are called at splsoftty()
from many tty drivers, so they were not protected from being reentered
from their own netisrs.  They certainly don't expect that but are
apparently remarkably robust if it occurs.  The problem in PR 798 seems
to be caused by pppstart() being reentered and finishing off the output
in progress by following the (stale) sc->sc_outm pointer.  Then the
original pppstart() finds garbage in m2 after MFREE(m, m2).  slstart()
doesn't have internal state like sc_outm so reentry of it probably only
causes out of order and dropped packets.
sys/i386/include/spl.h