: :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);