+ /* The "m_free" logic
+ * if( (m = m_free(m)) == MNULL )
+ * return (struct mbuf *)0;
+ * would cause a system crash if ever executed.
+ * This logic will be executed if the first mbuf
+ * in the chain only contains a CLNP header. The m_free routine
+ * will release the mbuf containing the CLNP header from the
+ * chain and the new head of the chain will not have the
+ * M_PKTHDR bit set. This routine, tp_inputprep, will
+ * eventually call the "sbappendaddr" routine. "sbappendaddr"
+ * calls "panic" if M_PKTHDR is not set. m_pullup is a cheap
+ * way of keeping the head of the chain from being freed.
+ */
+ if((m = m_pullup(m)) == MNULL)
+ return (MNULL);