From owner-p4-projects@FreeBSD.ORG Thu Jun 4 14:04:28 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 49C831065673; Thu, 4 Jun 2009 14:04:28 +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 081B7106564A for ; Thu, 4 Jun 2009 14:04:28 +0000 (UTC) (envelope-from zec@fer.hr) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id EA28D8FC13 for ; Thu, 4 Jun 2009 14:04:27 +0000 (UTC) (envelope-from zec@fer.hr) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n54E4RcN086005 for ; Thu, 4 Jun 2009 14:04:27 GMT (envelope-from zec@fer.hr) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n54E4RQT086003 for perforce@freebsd.org; Thu, 4 Jun 2009 14:04:27 GMT (envelope-from zec@fer.hr) Date: Thu, 4 Jun 2009 14:04:27 GMT Message-Id: <200906041404.n54E4RQT086003@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to zec@fer.hr using -f From: Marko Zec To: Perforce Change Reviews Cc: Subject: PERFORCE change 163487 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: Thu, 04 Jun 2009 14:04:29 -0000 http://perforce.freebsd.org/chv.cgi?CH=163487 Change 163487 by zec@zec_amdx4 on 2009/06/04 14:03:58 Allow for lo0 to be automatically destroyed via the vnet destructor framework. ifconfig lo0 destroy still works with unchanged semantics, i.e. returns an error and can never succeed. Affected files ... .. //depot/projects/vimage/src/sys/net/if_loop.c#50 edit Differences ... ==== //depot/projects/vimage/src/sys/net/if_loop.c#50 (text+ko) ==== @@ -135,12 +135,11 @@ static void lo_clone_destroy(struct ifnet *ifp) { -#ifdef INVARIANTS - INIT_VNET_NET(ifp->if_vnet); -#endif +#ifndef VIMAGE /* XXX: destroying lo0 will lead to panics. */ KASSERT(V_loif != ifp, ("%s: destroying lo0", __func__)); +#endif bpfdetach(ifp); if_detach(ifp); @@ -194,8 +193,10 @@ static int vnet_loif_idetach(unused) const void *unused; { + INIT_VNET_NET(curvnet); - /* XXX nothing done here - revisit! */ + if_clone_detach(V_lo_cloner); + V_loif = NULL; return (0); }