]> git.karo-electronics.de Git - karo-tx-linux.git/commit
mac80211: fix race with suspend and dynamic_ps_disable_work
authorLuis R. Rodriguez <lrodriguez@atheros.com>
Thu, 24 Dec 2009 20:26:09 +0000 (15:26 -0500)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 6 Jan 2010 23:04:28 +0000 (15:04 -0800)
commit1cfe005024b5c820f9b37c9045ec87ee75a8cfb6
treea77b335038e6a7db25c87a0f0c0d3b5a773cc61f
parent14b4d749ab35158853bca4868b42c0a8cb947206
mac80211: fix race with suspend and dynamic_ps_disable_work

commit b98c06b6debfe84c90200143bb1102f312f50a33 upstream.

When mac80211 suspends it calls a driver's suspend callback
as a last step and after that the driver assumes no calls will
be made to it until we resume and its start callback is kicked.
If such calls are made, however, suspend can end up throwing
hardware in an unexpected state and making the device unusable
upon resume.

Fix this by preventing mac80211 to schedule dynamic_ps_disable_work
by checking for when mac80211 starts to suspend and starts
quiescing. Frames should be allowed to go through though as
that is part of the quiescing steps and we do not flush the
mac80211 workqueue since it was already done towards the
beginning of suspend cycle.

The other mac80211 issue will be hanled in the next patch.

For further details see refer to the thread:

http://marc.info/?t=126144866100001&r=1&w=2

Cc: stable@kernel.org
Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
net/mac80211/tx.c