VIMAGE crashes on 9.x with hotplug net80211 devices
Marko Zec
zec at fer.hr
Sun Oct 21 19:37:31 UTC 2012
On Sunday 21 October 2012 21:04:41 Adrian Chadd wrote:
> Hi all,
>
> I have some crashes in the VIMAGE code on releng_9. Specifically, when
> I enable VIMAGE and then hotplug some cardbus ath(4) NICs.
>
> The panics are dereferencing the V_ ifindex and related fields.
>
> If I start adding CURVNET_SET(vnet0) and CURVNET_RESTORE() around the
> ifnet calls (attach, detach) then things stop panicing - however,
> things are slightly more complicated than that.
>
> Since it's possible that the cloned interfaces (and maybe the parent
> interface?) are placed into other VNETs, I have to make sure that the
> right vnet context is switched to before I free interfaces.
>
> So, may I please have some help by some VIMAGE-cluey people to sort
> out how to _properly_ get VIMAGE up on net80211? I'd like to fix this
> in -HEAD and -9 so people are able to use VIMAGEs for hostapd
> interfaces (and so I can abuse it for lots of local testing on a
> single laptop.)
The right approach would be to do a single CURVNET_SET(vnet0) /
CURVNET_RESTORE() somewhere near the root of the call graph being triggered
by the hotplug attach event. Not having any hotpluggable hardware at hand
I cannot be more specific where that place could be...
But most certainly doing CURVNET_SET(vnet0) on detach events would be wrong:
since ifnets may be assignet to non-default vnets,
CURVNET_SET(ifp->if_vnet) should be more appropriate there.
Another thing that may help could be turning on options VNET_DEBUG when, as
that should reveal excessive (and probably redundant) CURVNET_SET()
recursions.
Hope this helps,
Marko
More information about the freebsd-net
mailing list