summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichal Kazior <michal.kazior@tieto.com>2012-02-29 15:15:21 +0100
committerPhilippe Langlais <philippe.langlais@stericsson.com>2012-05-22 11:06:47 +0200
commitd4cdabfadee8cfc9c0cad8e6559a518883bfa153 (patch)
tree4d6d1c7d62591462f0ca0a75210837dab8ecb74d
parent93223eaaf59ff644862a1804c11b455950aa6865 (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.c8
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);