:
:Oops, forgot to post to the list, cause Matt CC'ed me and I replied to 
:his mail directly.
:
:http://rnrdoctor.sytes.net/dfcrash/
:
:Should I fill a bugreport instead?

    No, that's ok.  I'm not sure why the mbuf is shared at that point,
    but the assertion is definitely in the wrong part of the code path.

    I am going to move the assertion.   Could you try that patch and
    tell me if it works for compiled-in bridging?

                                        -Matt
                                        Matthew Dillon 
                                        <[EMAIL PROTECTED]>
Index: net/bridge/if_bridge.c
===================================================================
RCS file: /cvs/src/sys/net/bridge/if_bridge.c,v
retrieving revision 1.10
diff -u -r1.10 if_bridge.c
--- net/bridge/if_bridge.c      5 Sep 2006 03:48:12 -0000       1.10
+++ net/bridge/if_bridge.c      16 Sep 2006 22:41:37 -0000
@@ -2362,12 +2362,12 @@
        snap = 0;
        error = -1;     /* Default error if not error == 0 */
 
-       /* we may return with the IP fields swapped, ensure its not shared */
-       KASSERT(M_WRITABLE(*mp), ("%s: modifying a shared mbuf", __func__));
-
        if (pfil_bridge == 0 && pfil_member == 0)
                return (0); /* filtering is disabled */
 
+       /* we may return with the IP fields swapped, ensure its not shared */
+       KASSERT(M_WRITABLE(*mp), ("%s: modifying a shared mbuf", __func__));
+
        i = min((*mp)->m_pkthdr.len, max_protohdr);
        if ((*mp)->m_len < i) {
            *mp = m_pullup(*mp, i);

Reply via email to