Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 22 May 2013 17:13:03 +0000 (UTC)
From:      "Justin T. Gibbs" <gibbs@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r250913 - head/sys/dev/xen/netfront
Message-ID:  <201305221713.r4MHD3n7083573@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: gibbs
Date: Wed May 22 17:13:03 2013
New Revision: 250913
URL: http://svnweb.freebsd.org/changeset/base/250913

Log:
  Correct panic on detach of Xen PV network interfaces.
  
  dev/xen/netfront:
      In netif_free(), properly stop the interface and drain any pending
      timers prior to disconnecting from the backend device.
  
      Remove all media and detach our interface object from the system
      prior to deleting it.
  
  PR:		kern/176471
  Submitted by:	Roger Pau Monne <roger.pau@citrix.com>
  Reviewed by:	gibbs
  MFC after:	1 week

Modified:
  head/sys/dev/xen/netfront/netfront.c

Modified: head/sys/dev/xen/netfront/netfront.c
==============================================================================
--- head/sys/dev/xen/netfront/netfront.c	Wed May 22 16:33:28 2013	(r250912)
+++ head/sys/dev/xen/netfront/netfront.c	Wed May 22 17:13:03 2013	(r250913)
@@ -2171,10 +2171,14 @@ netfront_detach(device_t dev)
 static void
 netif_free(struct netfront_info *info)
 {
+	XN_LOCK(info);
+	xn_stop(info);
+	XN_UNLOCK(info);
+	callout_drain(&info->xn_stat_ch);
 	netif_disconnect_backend(info);
-#if 0
-	close_netdev(info);
-#endif
+	ifmedia_removeall(&info->sc_media);
+	ether_ifdetach(info->xn_ifp);
+	if_free(info->xn_ifp);
 }
 
 static void



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