ar9170: fix hang on stop
authorChristian Lamparter <chunkeey@web.de>
Sat, 28 Mar 2009 00:46:14 +0000 (01:46 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 22 Apr 2009 20:54:29 +0000 (16:54 -0400)
commit32c1628f153a5468cf48be5e5c04cd599ae9e01d
tree592608e027f1ff2bbd8344aebee2f88e5b21f74d
parent807e37394b5a1dc23a2908b59f34edbbae67e9ea
ar9170: fix hang on stop

This patch fixes a locking problem which freezes the network core.

The deadlock goes as follows:
- ar9170_op_stop - is called
1. change the state to IDLE
2. > take the MUTEX <
3. cancel_SYNC all pending work, which means
    "block until a work_struct's callback has terminated"
=>  if filter_config_work was queued it tries to get the MUTEX,
       before checking the device state...

Signed-off-by: Christian Lamparter <chunkeey@web.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ar9170/main.c