Meh, I messed up the patch. Take two, hopefully better. Sorry. Regards, Blaz --- a/net/mac80211/sta_info.c 2009-10-01 16:24:34.000000000 +0200 +++ b/net/mac80211/sta_info.c 2009-10-01 16:27:31.000000000 +0200 @@ -498,7 +498,7 @@ static void __sta_info_unlink(struct sta &(*sta)->sta); } - if (ieee80211_vif_is_mesh(&sdata->vif)) { + if (ieee80211_vif_is_mesh(&(*sta)->sdata->vif)) { mesh_accept_plinks_update(sdata); #ifdef CONFIG_MAC80211_MESH del_timer(&(*sta)->plink_timer); On Thu, Oct 1, 2009 at 4:32 PM, Blaž Bačnik <bacnik@xxxxxxxxx> wrote: > On Wed, Sep 30, 2009 at 10:16 PM, Johannes Berg > <johannes@xxxxxxxxxxxxxxxx> wrote: >> I can't reproduce that oops, but we have a fix to the issue which I'll >> send separately. > > Thanks for patches. However, I've investigated that oops and I don't really > understand it. Problem seems to be in __sta_info_unlink where code checks > if vif is a mesh. Since this is a vlan iface, sdata used actually belongs to ap > iface due to previous if but that really shouldn't be a problem since ap's > sdata should have vif->type as well, right? > > While testing I've found out that sdata_of_ap->vif points to funny addresses > like 248 and such. So I've changed the code and that seems to have fixed > oops. I think this is now the right behaviour, anyway. > > --- a/net/mac80211/sta_info.c 2009-10-01 16:27:31.000000000 +0200 > +++ b/net/mac80211/sta_info.c 2009-10-01 16:24:34.000000000 +0200 > @@ -498,7 +498,7 @@ static void __sta_info_unlink(struct sta > &(*sta)->sta); > } > > - if (ieee80211_vif_is_mesh(&(*sta)->sdata->vif)) { > + if (ieee80211_vif_is_mesh(&sdata->vif)) { > mesh_accept_plinks_update(sdata); > #ifdef CONFIG_MAC80211_MESH > del_timer(&(*sta)->plink_timer); > -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html