Date: Thu, 27 Mar 2003 12:15:01 -0500 From: Bosko Milekic <bmilekic@unixdaemons.com> To: Maxime Henrion <mux@freebsd.org> Cc: cvs-all@freebsd.org Subject: Re: cvs commit: src/sys/conf options src/sys/netinet ip_output.c Message-ID: <20030327171501.GA18549@unixdaemons.com> In-Reply-To: <20030327165800.GK57674@elvis.mu.org> References: <200303260452.h2Q4quap015364@www.ambrisko.com> <20030326114030.U2075@odysseus.silby.com> <20030326183351.GJ57674@elvis.mu.org> <20030326130903.G2075@odysseus.silby.com> <20030327013224.P7674@odysseus.silby.com> <20030327164402.GA15454@unixdaemons.com> <20030327165800.GK57674@elvis.mu.org>
next in thread | previous in thread | raw e-mail | index | archive | help
--u3/rZRmxL6MmkK24 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline See attached. Similar logic may be applied to m_dup_pkthdr(). On Thu, Mar 27, 2003 at 05:58:00PM +0100, Maxime Henrion wrote: > Bosko Milekic wrote: > > > > Can you please still use m_gethdr() or m_getcl() to do the allocations > > in the defragment function? Similarly, for > MCLBYTES, use m_getm(). > > Don't roll your own. > > Please see my reply to Mike for the first version of his patch. He > couldn't do this because m_dup_pkthdr() has a KASSERT() that makes it > panic if we have a cluster attached to the mbuf. > > Cheers, > Maxime > -- Bosko Milekic bmilekic@unixdaemons.com bmilekic@FreeBSD.org --u3/rZRmxL6MmkK24 Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="move.diff" --- /usr/src/sys.old/kern/uipc_mbuf.c Wed Mar 5 18:37:41 2003 +++ /usr/src/sys/kern/uipc_mbuf.c Thu Mar 6 18:16:06 2003 @@ -79,14 +79,15 @@ ("m_move_pkthdr: called on non-header")); KASSERT(SLIST_EMPTY(&to->m_pkthdr.tags), ("m_move_pkthdr: to has tags")); -#endif KASSERT((to->m_flags & M_EXT) == 0, ("m_move_pkthdr: to has cluster")); +#endif #ifdef MAC if (to->m_flags & M_PKTHDR) mac_destroy_mbuf(to); #endif - to->m_flags = from->m_flags & M_COPYFLAGS; - to->m_data = to->m_pktdat; + to->m_flags = (from->m_flags & M_COPYFLAGS) | (to->m_flags & M_EXT); + if ((to->m_flags & M_EXT) == 0) + to->m_data = to->m_pktdat; to->m_pkthdr = from->m_pkthdr; /* especially tags */ #ifdef MAC mac_init_mbuf(to, 1); /* XXXMAC no way to fail */ --u3/rZRmxL6MmkK24--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030327171501.GA18549>