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>
This commit is contained in:
rodrigc 2014-02-24 08:50:06 +00:00
parent 1ce9ab6c9a
commit 1f1b0f8da8

View File

@ -207,6 +207,7 @@ ue_attach_post_task(struct usb_proc_msg *_task)
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 *_task)
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 *_task)
return;
fail:
CURVNET_RESTORE();
free_unr(ueunit, ue->ue_unit);
if (ue->ue_ifp != NULL) {
if_free(ue->ue_ifp);