rcutree tree warning during P2P device support testing

Arend van Spriel arend at broadcom.com
Wed Mar 20 17:17:03 EDT 2013


On 03/20/2013 04:08 PM, Johannes Berg wrote:
> 
>> I am testing the P2P device support patches. Upon stopping the
>> wpa_supplicant I get the following warning and when I unload brcmfmac it
>> hangs resulting in hung_task_timeout message. The whole rcu stuff still
>> needs to settle in my brain. I suspect the warning is related to
>> brcmfmac unload failure, but maybe you have some ideas where I should look.
> 
> 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.

>> [ 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 ;-)

>> [ 3606.381631] INFO: task khubd:30 blocked for more than 120 seconds.
>> [ 3606.388366] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
>> disables this message.
>> [ 3606.396931] khubd           D f4f01cd8     0    30      2 0x00000000
>> [ 3606.403609]  f4f01d10 00000092 00000000 f4f01cd8 00000246 c1748000
>> c183fb40 c183fb40
>> [ 3606.411731]  d46b6273 0000031c f53e7b40 f4d323c0 c1748000 00000246
>> 00000000 f0820090
>> [ 3606.419807]  00000246 f4f01cd8 00000046 00000001 00000046 00000000
>> 00000002 f0820090
>> [ 3606.427881] Call Trace:
>> [ 3606.430518]  [<c1097aeb>] ? trace_hardirqs_on+0xb/0x10
>> [ 3606.435907]  [<c1525ff3>] schedule+0x23/0x60
>> [ 3606.440402]  [<f8230c65>] wiphy_unregister+0xa5/0x2e0 [cfg80211]
> 
> This seems to be because you don't remove the p2p device if it's still
> present when you unload the driver. Call cfg80211_unregister_wdev() at
> some appropriate place.

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?

Gr. AvS




More information about the HostAP mailing list