From owner-freebsd-net Sat Jan 5 11:21: 4 2002 Delivered-To: freebsd-net@freebsd.org Received: from cairo.zsat.net (cairo.zsat.net [64.6.64.200]) by hub.freebsd.org (Postfix) with ESMTP id 0794B37B419 for ; Sat, 5 Jan 2002 11:20:59 -0800 (PST) Received: by cairo.zsat.net (Postfix, from userid 1002) id 0B17AA6A04; Sat, 5 Jan 2002 13:20:53 -0600 (CST) Date: Sat, 5 Jan 2002 13:20:52 -0600 From: Scott Lamb To: Archie Cobbs Cc: freebsd-net@freebsd.org Subject: Re: netgraph kernel panic Message-ID: <20020105192052.GA1739@cairo.zsat.net> References: <200201050335.g053ZFo26297@arch20m.dellroad.org> <200201050420.g054KNx26451@arch20m.dellroad.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200201050420.g054KNx26451@arch20m.dellroad.org> User-Agent: Mutt/1.3.24i Sender: owner-freebsd-net@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.org On Fri, Jan 04, 2002 at 08:20:23PM -0800, Archie Cobbs wrote: > If you have time, please try applying the patch below to your kernel. > Leave the mpd configuration as it was, and let's see if we get a > normal error instead of a kernel panic (I don't have a test setup > for this myself just now). Yep. I get this message when I don't add that route: [work] error writing len 12 frame to bypass: Resource deadlock avoided and it still works when I do add the route. > This is for FreeBSD-4.4, let me know if you have a different version. I'm following RELENG-4 (which calls itself 4.5-PRERELEASE now), so your patch didn't apply quite cleanly. Below is what I used (which likely isn't quite right). Thanks, Scott Lamb Index: netgraph/ng_ksocket.c =================================================================== RCS file: /home/ncvs/src/sys/netgraph/ng_ksocket.c,v retrieving revision 1.5.2.8 diff -u -r1.5.2.8 ng_ksocket.c --- netgraph/ng_ksocket.c 2001/12/07 02:59:20 1.5.2.8 +++ netgraph/ng_ksocket.c 2002/01/05 19:18:24 @@ -72,8 +72,9 @@ /* Node private data */ struct ng_ksocket_private { - hook_p hook; - struct socket *so; + hook_p hook; /* our hook, if any */ + struct socket *so; /* our associated socket */ + u_int sending; /* writing to socket */ }; typedef struct ng_ksocket_private *priv_p; @@ -810,7 +811,13 @@ } /* Send packet */ + if (priv->sending) { + NG_FREE_DATA(m, meta); + return (EDEADLK); + } + priv->sending++; error = (*so->so_proto->pr_usrreqs->pru_sosend)(so, sa, 0, m, 0, 0, p); + priv->sending--; /* Clean up and exit */ NG_FREE_META(meta); To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-net" in the body of the message