From owner-freebsd-commit Mon Oct 30 09:02:21 1995 Return-Path: owner-commit Received: (from root@localhost) by freefall.freebsd.org (8.6.12/8.6.6) id JAA01016 for freebsd-commit-outgoing; Mon, 30 Oct 1995 09:02:21 -0800 Received: (from root@localhost) by freefall.freebsd.org (8.6.12/8.6.6) id JAA00995 for cvs-all-outgoing; Mon, 30 Oct 1995 09:02:01 -0800 Received: (from root@localhost) by freefall.freebsd.org (8.6.12/8.6.6) id JAA00981 for cvs-sys-outgoing; Mon, 30 Oct 1995 09:01:53 -0800 Received: (from bde@localhost) by freefall.freebsd.org (8.6.12/8.6.6) id JAA00966 ; Mon, 30 Oct 1995 09:01:43 -0800 Date: Mon, 30 Oct 1995 09:01:43 -0800 From: Bruce Evans Message-Id: <199510301701.JAA00966@freefall.freebsd.org> To: CVS-commiters, cvs-sys Subject: cvs commit: src/sys/i386/include spl.h Sender: owner-commit@FreeBSD.org Precedence: bulk bde 95/10/30 09:01:41 Modified: sys/i386/include spl.h Log: 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.