Author: mmlr Date: 2009-12-18 19:00:11 +0100 (Fri, 18 Dec 2009) New Revision: 34691 Changeset: http://dev.haiku-os.org/changeset/34691/haiku Ticket: http://dev.haiku-os.org/ticket/5089 Modified: haiku/trunk/src/libs/compat/freebsd_network/mbuf.c Log: Also call construct_mbuf() from m_getjcl() as it initializes the mbuf fields. It also handles the M_PKTHDR flag. Before, the uninitialized fields could be left over from earlier freed mbufs and on m_freem previous m_next fields could be returned resulting in random mbufs being freed. This makes the iprowifi4965 work and fixes #5089. Modified: haiku/trunk/src/libs/compat/freebsd_network/mbuf.c =================================================================== --- haiku/trunk/src/libs/compat/freebsd_network/mbuf.c 2009-12-18 15:05:37 UTC (rev 34690) +++ haiku/trunk/src/libs/compat/freebsd_network/mbuf.c 2009-12-18 18:00:11 UTC (rev 34691) @@ -188,11 +188,11 @@ (struct mbuf *)object_cache_alloc(sMBufCache, m_to_oc_flags(how)); if (mb == NULL) return NULL; + construct_mbuf(mb, type, flags); if (construct_ext_sized_mbuf(mb, how, size) < 0) { object_cache_free(sMBufCache, mb); return NULL; } - mb->m_flags |= flags; return mb; }