From owner-p4-projects@FreeBSD.ORG Tue Oct 30 21:13:40 2007 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id CE7FF16A41B; Tue, 30 Oct 2007 21:13:39 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 93E4A16A476 for ; Tue, 30 Oct 2007 21:13:39 +0000 (UTC) (envelope-from zec@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 8537B13C48E for ; Tue, 30 Oct 2007 21:13:39 +0000 (UTC) (envelope-from zec@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id l9ULDd39047293 for ; Tue, 30 Oct 2007 21:13:39 GMT (envelope-from zec@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id l9ULDda7047290 for perforce@freebsd.org; Tue, 30 Oct 2007 21:13:39 GMT (envelope-from zec@FreeBSD.org) Date: Tue, 30 Oct 2007 21:13:39 GMT Message-Id: <200710302113.l9ULDda7047290@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to zec@FreeBSD.org using -f From: Marko Zec To: Perforce Change Reviews Cc: Subject: PERFORCE change 128368 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 Oct 2007 21:13:40 -0000 http://perforce.freebsd.org/chv.cgi?CH=128368 Change 128368 by zec@zec_tpx32 on 2007/10/30 21:13:05 In ng_pipe, drop a refcount to our own node on node shutdown, otherwise the node would remain a zombie invisible by "ngctl list". This was relatively benign for ng_pipe nodes living in the default vnet, but would lead to a panic on attempts to destroy a vnet with at least one such a zombie hanging in there. While here, remove an unused field in node_priv struct, and rename ngp_rmnode() -> ngp_shutdown(). Affected files ... .. //depot/projects/vimage/src/sys/netgraph/ng_pipe.c#5 edit Differences ... ==== //depot/projects/vimage/src/sys/netgraph/ng_pipe.c#5 (text+ko) ==== @@ -96,7 +96,6 @@ /* Per node info */ struct node_priv { - node_p node; u_int64_t delay; u_int32_t overhead; u_int32_t header_offset; @@ -147,7 +146,7 @@ /* Netgraph methods */ static ng_constructor_t ngp_constructor; static ng_rcvmsg_t ngp_rcvmsg; -static ng_shutdown_t ngp_rmnode; +static ng_shutdown_t ngp_shutdown; static ng_newhook_t ngp_newhook; static ng_rcvdata_t ngp_rcvdata; static ng_disconnect_t ngp_disconnect; @@ -246,7 +245,7 @@ .name = NG_PIPE_NODE_TYPE, .mod_event = ngp_modevent, .constructor = ngp_constructor, - .shutdown = ngp_rmnode, + .shutdown = ngp_shutdown, .rcvmsg = ngp_rcvmsg, .newhook = ngp_newhook, .rcvdata = ngp_rcvdata, @@ -945,7 +944,7 @@ * a normal node would. */ static int -ngp_rmnode(node_p node) +ngp_shutdown(node_p node) { const priv_p priv = NG_NODE_PRIVATE(node); @@ -957,6 +956,7 @@ if (priv->lower.hook != NULL) ng_rmhook_self(priv->lower.hook); } + NG_NODE_UNREF(node); FREE(priv, M_NG_PIPE); return (0); }