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:
parent
294d0d88fc
commit
458a36d594
@ -208,6 +208,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");
|
||||
@ -254,6 +255,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),
|
||||
@ -267,6 +270,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);
|
||||
|
Loading…
Reference in New Issue
Block a user