Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 17 Feb 2004 03:16:10 +0100
From:      Max Laier <max@love2party.net>
To:        Jiri Mikulas <konfer@mikulas.com>
Cc:        Stefan Ehmann <shoesoft@gmx.net>
Subject:   Re: PANIC: trap.c
Message-ID:  <200402170316.10258.max@love2party.net>
In-Reply-To: <Pine.NEB.3.96L.1040215214140.61630G-100000@fledge.watson.org>
References:  <Pine.NEB.3.96L.1040215214140.61630G-100000@fledge.watson.org>

next in thread | previous in thread | raw e-mail | index | archive | help

--Boundary-00=_qlXMAXKQL1HLSBe
Content-Type: text/plain;
  charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

On Monday 16 February 2004 03:54, Robert Watson wrote:
> On Mon, 16 Feb 2004, Jiri Mikulas wrote:
> > Hello, just only for info I got this panic on:  FreeBSD 5.2-CURRENT
> > #1: Mon Feb 16 00:53:39 CET 2004
> >
> > I built few kernels from saturday morning to sunday evening and with
> > all of them i got this panic ..  (my last functional kernel is from
> > FreeBSD 5.2-CURRENT #0: Mon Feb 9 19:53:47 CET 2004)  Jiri
>
> It looks like 'ifp' in ip_output.c is NULL here (the offset of
> if_hwassist is 0x98).  Are you running with DUMMYNET?  I'm wondering if
> the recent commit to clean up MT_TAG pseudo-mbufs has a loose end
> somewhere.  Try backing ouf the following commit locally:
>
> mlaier      2004/02/13 11:14:16 PST
>
>   FreeBSD src repository
>
>   Modified files:
>     sys/net              bridge.c if_ethersubr.c
>     sys/netinet          in_proto.c ip_divert.c ip_dummynet.c
>                          ip_dummynet.h ip_fastfwd.c ip_fw.h
>                          ip_fw2.c ip_input.c ip_output.c ip_var.h
>                          tcp_debug.c tcp_input.c
>     sys/sys              mbuf.h
>   Added files:
>     sys/netinet          ip_divert.h
>   Log:
>   This set of changes eliminates the use of MT_TAG "pseudo mbufs",
> replacing
>   them mostly with packet tags (one case is handled by using an mbuf
> flag since the linkage between "caller" and "callee" is direct and
> there's no need to incur the overhead of a packet tag).
>
>   This is (mostly) work from: sam
>
>   Silence from: -arch
>   Approved by: bms(mentor), sam, rwatson
>
>   Revision  Changes    Path
>   1.74      +5 -9      src/sys/net/bridge.c
>   1.156     +2 -15     src/sys/net/if_ethersubr.c
>   1.68      +1 -0      src/sys/netinet/in_proto.c
>   1.82      +48 -21    src/sys/netinet/ip_divert.c
>   1.1       +83 -0     src/sys/netinet/ip_divert.h (new)
>   1.77      +125 -91   src/sys/netinet/ip_dummynet.c
>   1.28      +17 -20    src/sys/netinet/ip_dummynet.h
>   1.6       +18 -67    src/sys/netinet/ip_fastfwd.c
>   1.81      +0 -1      src/sys/netinet/ip_fw.h
>   1.54      +25 -5     src/sys/netinet/ip_fw2.c
>   1.261     +56 -118   src/sys/netinet/ip_input.c
>   1.207     +60 -53    src/sys/netinet/ip_output.c
>   1.82      +16 -9     src/sys/netinet/ip_var.h
>   1.22      +1 -0      src/sys/netinet/tcp_debug.c
>   1.225     +2 -6      src/sys/netinet/tcp_input.c
>   1.136     +1 -18     src/sys/sys/mbuf.h

Okay, that was it:
We forgot to remove the tag for certain codepathes (ip_input -> ip_forward 
-> ip_output) which was previously done by moving m to m->m_next (the 
actual data after the MT_TAG). Please try the attached patch to 
ip_input.c (forget the previous one) and report back if it works for you.

Thanks in advance.

-- 
Best regards,				| mlaier@freebsd.org
Max Laier				| ICQ #67774661
http://pf4freebsd.love2party.net/	| mlaier@EFnet

--Boundary-00=_qlXMAXKQL1HLSBe
Content-Type: text/x-diff;
  charset="iso-8859-1";
  name="ip_input.c.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
	filename="ip_input.c.diff"

Index: ip_input.c
===================================================================
RCS file: /home/ncvs/src/sys/netinet/ip_input.c,v
retrieving revision 1.262
diff -u -r1.262 ip_input.c
--- ip_input.c	13 Feb 2004 19:20:43 -0000	1.262
+++ ip_input.c	17 Feb 2004 02:03:45 -0000
@@ -504,6 +504,10 @@
 	}
 pass:
 
+	mtag = m_tag_find(m, PACKET_TAG_DUMMYNET, NULL);
+	if (mtag)
+		m_tag_delete(m, mtag);
+
 	/*
 	 * Process options and, if not destined for us,
 	 * ship it on.  ip_dooptions returns 1 when an

--Boundary-00=_qlXMAXKQL1HLSBe--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200402170316.10258.max>