Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 24 Feb 2014 08:50:07 +0000 (UTC)
From:      Craig Rodrigues <rodrigc@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject:   svn commit: r262436 - stable/10/sys/dev/usb/net
Message-ID:  <201402240850.s1O8o7th013464@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: rodrigc
Date: Mon Feb 24 08:50:06 2014
New Revision: 262436
URL: http://svnweb.freebsd.org/changeset/base/262436

Log:
  MFC r262142:
  
     In ue_attach_post_task(), initialize curvnet to vnet0 before calling if_attach().
     Before this patch, curvnet was NULL.
     When the VIMAGE kernel option is enabled, this eliminates
     kernel panics when USB ethernet devices are plugged in.
  
  PR: 183835
  Submitted by: Hiroo Oono <hiroo.ono at gmail dot com>

Modified:
  stable/10/sys/dev/usb/net/usb_ethernet.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/dev/usb/net/usb_ethernet.c
==============================================================================
--- stable/10/sys/dev/usb/net/usb_ethernet.c	Mon Feb 24 08:21:49 2014	(r262435)
+++ stable/10/sys/dev/usb/net/usb_ethernet.c	Mon Feb 24 08:50:06 2014	(r262436)
@@ -207,6 +207,7 @@ ue_attach_post_task(struct usb_proc_msg 
 	sysctl_ctx_init(&ue->ue_sysctl_ctx);
 
 	error = 0;
+	CURVNET_SET_QUIET(vnet0);
 	ifp = if_alloc(IFT_ETHER);
 	if (ifp == NULL) {
 		device_printf(ue->ue_dev, "could not allocate ifnet\n");
@@ -253,6 +254,8 @@ ue_attach_post_task(struct usb_proc_msg 
 	if (ifp->if_capabilities & IFCAP_VLAN_MTU)
 		ifp->if_hdrlen = sizeof(struct ether_vlan_header);
 
+	CURVNET_RESTORE();
+
 	snprintf(num, sizeof(num), "%u", ue->ue_unit);
 	ue->ue_sysctl_oid = SYSCTL_ADD_NODE(&ue->ue_sysctl_ctx,
 	    &SYSCTL_NODE_CHILDREN(_net, ue),
@@ -266,6 +269,7 @@ ue_attach_post_task(struct usb_proc_msg 
 	return;
 
 fail:
+	CURVNET_RESTORE();
 	free_unr(ueunit, ue->ue_unit);
 	if (ue->ue_ifp != NULL) {
 		if_free(ue->ue_ifp);



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