diff options
author | Michal Kazior <michal.kazior@tieto.com> | 2012-02-29 15:15:21 +0100 |
---|---|---|
committer | Philippe Langlais <philippe.langlais@stericsson.com> | 2012-05-22 11:06:47 +0200 |
commit | d4cdabfadee8cfc9c0cad8e6559a518883bfa153 (patch) | |
tree | 4d6d1c7d62591462f0ca0a75210837dab8ecb74d | |
parent | 93223eaaf59ff644862a1804c11b455950aa6865 (diff) |
cw1200: fix ps_state_lock locking
Use _bh function variants for ps_state_lock everywhere.
Should fix possible deadlocks.
Change-Id: Ic316a302c57381f96858cf5337c1d819142b01e1
Signed-off-by: Michal Kazior <michal.kazior@tieto.com>
Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/43916
Reviewed-by: Bartosz MARKOWSKI <bartosz.markowski@tieto.com>
Tested-by: Bartosz MARKOWSKI <bartosz.markowski@tieto.com>
-rw-r--r-- | drivers/staging/cw1200/txrx.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/staging/cw1200/txrx.c b/drivers/staging/cw1200/txrx.c index 1a48689660c..fb80d218dfa 100644 --- a/drivers/staging/cw1200/txrx.c +++ b/drivers/staging/cw1200/txrx.c @@ -1317,24 +1317,24 @@ void cw1200_link_id_reset(struct work_struct *work) /* Make sure we execute the WQ */ flush_workqueue(priv->workqueue); /* Release the link ID */ - spin_lock(&priv->ps_state_lock); + spin_lock_bh(&priv->ps_state_lock); priv->link_id_db[temp_linkid - 1].prev_status = priv->link_id_db[temp_linkid - 1].status; priv->link_id_db[temp_linkid - 1].status = CW1200_LINK_RESET; - spin_unlock(&priv->ps_state_lock); + spin_unlock_bh(&priv->ps_state_lock); wsm_lock_tx_async(priv); if (queue_work(priv->workqueue, &priv->link_id_work) <= 0) wsm_unlock_tx(priv); } } else { - spin_lock(&priv->ps_state_lock); + spin_lock_bh(&priv->ps_state_lock); priv->link_id_db[priv->action_linkid - 1].prev_status = priv->link_id_db[priv->action_linkid - 1].status; priv->link_id_db[priv->action_linkid - 1].status = CW1200_LINK_RESET_REMAP; - spin_unlock(&priv->ps_state_lock); + spin_unlock_bh(&priv->ps_state_lock); wsm_lock_tx_async(priv); if (queue_work(priv->workqueue, &priv->link_id_work) <= 0) wsm_unlock_tx(priv); |