rcutree tree warning during P2P device support testing
Arend van Spriel
arend
Thu Mar 21 05:04:49 PDT 2013
On 03/20/2013 10:46 PM, Arend van Spriel wrote:
> On 03/20/2013 10:29 PM, Johannes Berg wrote:
>> On Wed, 2013-03-20 at 22:17 +0100, Arend van Spriel wrote:
>>>> Hmm, why would stopping the supplicant cause brcmfmac to unload?? Or are
>>>> you saying you first stop the supplicant, which gets you that warning,
>>>> and then unload fails?
>>>
>>> Indeed, upon stopping wpa_supplicant I get the warning. And doing a
>>> rmmod from the command line after that fails in the hang.
>>
>> Right, ok.
>>
>>>>> [ 1634.039095] WARNING: at kernel/rcutree.c:1960
>>>>> rcu_process_callbacks+0x469/0x560()
>>>>
>>>>> [ 1634.133917] Call Trace:
>>>>> [ 1634.139833] [<c1039c92>] warn_slowpath_common+0x72/0xa0
>>>>> [ 1634.148659] [<c10c61f9>] ? rcu_process_callbacks+0x469/0x560
>>>>> [ 1634.157914] [<c10c61f9>] ? rcu_process_callbacks+0x469/0x560
>>>>> [ 1634.167121] [<c1039ce2>] warn_slowpath_null+0x22/0x30
>>>>> [ 1634.175725] [<c10c61f9>] rcu_process_callbacks+0x469/0x560
>>>>
>>>> Can't say I understand this warning ...
>>>>
>>>
>>> At least we are on the same page then ;-)
>>
>> It looks like some rcu head list corruption ... no idea really.
>>
>
> I have now (I think). I did a kfree of the driver's vif structure, which
> is container of the wireless_dev and that is still on the rcu head list.
>
>>> The p2p device is already removed upon stopping wpa_supplicant through
>>> .del_virtual_intf() callback. Took a quick peek in
>>> net/mac80211/iface.c:ieee80211_if_remove() and wonder whether I should
>>> do cfg80211_unregister_wdev() in that code path as well. Guess so, right?
>>
>> I think so, yes. Does the warning go away if you do? :)
>
> Not tested yet.
That did the trick. Apparently, wpa_s/driver_nl80211 does not do a
stop_p2p_device. That is triggered by cfg80211_unregister_wdev(). Should
wpa_s do the stop_p2p_device before deleting it or is the current
behaviour fine.
Regards,
Arend
More information about the Hostap
mailing list