On Wed, 2013-04-17 at 11:42 +0200, Johannes Berg wrote: > From: Johannes Berg <johannes.berg@xxxxxxxxx> > > Since Stanislaw's patches, when suspending while connected, > cfg80211 will disconnect. This causes the AP station to be > removed, which uses call_rcu() to clean up. Due to needing > process context, this queues a work struct on the mac80211 > workqueue. This will warn and fail when already suspended, > which can happen if the rcu call doesn't happen quickly. > > To fix this, replace the synchronize_net() which is really > just synchronize_rcu_expedited() with rcu_barrier(), which > unlike synchronize_rcu() waits until RCU callback have run > and thus avoids this issue. > > In theory, this can even happen without Stanislaw's change > to disconnect on suspend since userspace might disconnect > just before suspending, though then it's unlikely that the > call_rcu() will be delayed long enough. Applied. johannes -- 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