summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike McCormack <mikem@ring3k.org>2011-03-03 22:40:30 +0900
committerGreg Kroah-Hartman <gregkh@suse.de>2011-03-07 13:31:39 -0800
commit2cb61ea25b49049f9281007f8b534e5d384ebba5 (patch)
treecc1a4893e0d191ec13331935b549e33ee0f1f48d
parentbc54f3393c0563a00c13d2b58aca23ae153bdd3b (diff)
downloadlinux-stable-2cb61ea25b49049f9281007f8b534e5d384ebba5.tar.gz
linux-stable-2cb61ea25b49049f9281007f8b534e5d384ebba5.tar.bz2
linux-stable-2cb61ea25b49049f9281007f8b534e5d384ebba5.zip
staging: rtl8192e: Add a spinlock around SetRFPowerState8190
Signed-off-by: Mike McCormack <mikem@ring3k.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--drivers/staging/rtl8192e/r8190_rtl8256.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/drivers/staging/rtl8192e/r8190_rtl8256.c b/drivers/staging/rtl8192e/r8190_rtl8256.c
index 8b182089b046..40a169df5123 100644
--- a/drivers/staging/rtl8192e/r8190_rtl8256.c
+++ b/drivers/staging/rtl8192e/r8190_rtl8256.c
@@ -327,8 +327,11 @@ SetRFPowerState8190(struct net_device *dev, RT_RF_POWER_STATE eRFPowerState)
PRT_POWER_SAVE_CONTROL pPSC = (PRT_POWER_SAVE_CONTROL)(&(priv->ieee80211->PowerSaveControl));
bool bResult = true;
- if(priv->SetRFPowerStateInProgress == true)
- return false;
+ spin_lock(&priv->ps_lock);
+ if (priv->SetRFPowerStateInProgress) {
+ bResult = false;
+ goto out;
+ }
priv->SetRFPowerStateInProgress = true;
switch( eRFPowerState )
@@ -345,8 +348,8 @@ SetRFPowerState8190(struct net_device *dev, RT_RF_POWER_STATE eRFPowerState)
*/
if (!NicIFEnableNIC(dev)) {
RT_TRACE(COMP_ERR, "%s(): NicIFEnableNIC failed\n",__FUNCTION__);
- priv->SetRFPowerStateInProgress = false;
- return false;
+ bResult = false;
+ goto out;
}
RT_CLEAR_PS_LEVEL(pPSC, RT_RF_OFF_LEVL_HALT_NIC);
@@ -424,7 +427,9 @@ SetRFPowerState8190(struct net_device *dev, RT_RF_POWER_STATE eRFPowerState)
priv->ieee80211->eRFPowerState = eRFPowerState;
}
+out:
priv->SetRFPowerStateInProgress = false;
+ spin_unlock(&priv->ps_lock);
return bResult;
}