From owner-svn-src-projects@FreeBSD.ORG  Wed Jan 14 19:42:37 2015
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115])
 (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by hub.freebsd.org (Postfix) with ESMTPS id 7244F7EE;
 Wed, 14 Jan 2015 19:42:37 +0000 (UTC)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mx1.freebsd.org (Postfix) with ESMTPS id 5F83B99;
 Wed, 14 Jan 2015 19:42:37 +0000 (UTC)
Received: from svn.freebsd.org ([127.0.1.70])
 by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t0EJgbxV072393;
 Wed, 14 Jan 2015 19:42:37 GMT (envelope-from glebius@FreeBSD.org)
Received: (from glebius@localhost)
 by svn.freebsd.org (8.14.9/8.14.9/Submit) id t0EJgbOg072392;
 Wed, 14 Jan 2015 19:42:37 GMT (envelope-from glebius@FreeBSD.org)
Message-Id: <201501141942.t0EJgbOg072392@svn.freebsd.org>
X-Authentication-Warning: svn.freebsd.org: glebius set sender to
 glebius@FreeBSD.org using -f
From: Gleb Smirnoff <glebius@FreeBSD.org>
Date: Wed, 14 Jan 2015 19:42:37 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r277189 - projects/ifnet/sys/net
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.18-1
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Wed, 14 Jan 2015 19:42:37 -0000

Author: glebius
Date: Wed Jan 14 19:42:36 2015
New Revision: 277189
URL: https://svnweb.freebsd.org/changeset/base/277189

Log:
  Call ift_detach from if_detach(), not from if_free().

Modified:
  projects/ifnet/sys/net/if.c

Modified: projects/ifnet/sys/net/if.c
==============================================================================
--- projects/ifnet/sys/net/if.c	Wed Jan 14 19:42:11 2015	(r277188)
+++ projects/ifnet/sys/net/if.c	Wed Jan 14 19:42:36 2015	(r277189)
@@ -638,14 +638,10 @@ if_attach(struct if_attach_args *ifat)
 static void
 if_free_internal(struct ifnet *ifp)
 {
-	struct iftype *ift = ifp->if_type;
 
 	KASSERT((ifp->if_flags & IFF_DYING),
 	    ("if_free_internal: interface not dying"));
 
-	if (ift != NULL && ift->ift_detach != NULL)
-		ift->ift_detach(ifp);
-
 #ifdef MAC
 	mac_ifnet_destroy(ifp);
 #endif /* MAC */
@@ -1012,6 +1008,11 @@ if_detach_internal(struct ifnet *ifp, in
 		devctl_notify("IFNET", ifp->if_xname, "DETACH", NULL);
 
 	if (!vmove) {
+		struct iftype *ift = ifp->if_type;
+
+		if (ift != NULL && ift->ift_detach != NULL)
+			ift->ift_detach(ifp);
+
 		/*
 		 * Prevent further calls into the device driver via ifnet.
 		 */