From e7ba8f6b5a0d36e310e4814e45b12f5f20145983 Mon Sep 17 00:00:00 2001 From: paulus Date: Mon, 18 Jul 1994 23:45:33 +0000 Subject: [PATCH] If we can't get mbuf clusters, take the ppp interface down instead of writing beyond the end of ordinary mbufs. --- sys/net/if_ppp.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/sys/net/if_ppp.c b/sys/net/if_ppp.c index fdc5fe1cb602..598772e72316 100644 --- a/sys/net/if_ppp.c +++ b/sys/net/if_ppp.c @@ -1,4 +1,4 @@ -/* $NetBSD: if_ppp.c,v 1.15 1994/07/03 06:44:03 deraadt Exp $ */ +/* $NetBSD: if_ppp.c,v 1.16 1994/07/18 23:45:33 paulus Exp $ */ /* * if_ppp.c - Point-to-Point Protocol (PPP) Asynchronous driver. @@ -1037,14 +1037,23 @@ pppgetm(sc) for (;; mp = &m->m_next) { MGETHDR(m, M_DONTWAIT, MT_DATA); if (m == 0) { - m_freem(sc->sc_m); - sc->sc_m = NULL; + if (sc->sc_m != NULL) { + m_freem(sc->sc_m); + sc->sc_m = NULL; + } splx(s); printf("ppp%d: can't allocate mbuf\n", sc->sc_if.if_unit); return (0); } *mp = m; MCLGET(m, M_DONTWAIT); + if ((m->m_flags & M_EXT) == 0) { + m_freem(sc->sc_m); + sc->sc_m = NULL; + splx(s); + printf("ppp%d: can't allocate mbuf cluster\n", sc->sc_if.if_unit); + return (0); + } if ((len -= M_DATASIZE(m)) <= 0) { splx(s); return (1);