rtl8188eu: pwrctrl_priv: Replace semaphore 'lock' with mutex
authorBinoy Jayan <binoy.jayan@linaro.org>
Mon, 6 Jun 2016 04:38:06 +0000 (10:08 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 21 Aug 2016 16:14:51 +0000 (18:14 +0200)
The semaphore 'lock' in pwrctrl_priv is a simple mutex, so it should
be written as one. Semaphores are going away in the future.
_enter_pwrlock was using down_interruptible(), so the lock could be broken
by sending a signal. This could be a bug, because nothing checks the return
code here. Hence, using mutex_lock instead of the interruptible version.
Also, remove the now unused wrappers _init_pwrlock, _enter_pwrlock,
_exit_pwrlock and _rtw_down_sema.

Signed-off-by: Binoy Jayan <binoy.jayan@linaro.org>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/rtl8188eu/core/rtw_pwrctrl.c
drivers/staging/rtl8188eu/include/osdep_service.h
drivers/staging/rtl8188eu/include/rtw_event.h
drivers/staging/rtl8188eu/include/rtw_pwrctrl.h
drivers/staging/rtl8188eu/os_dep/osdep_service.c
drivers/staging/rtl8188eu/os_dep/usb_intf.c

index 59c6d8ab60f67f40609b77b87d4dcce714b95a96..0b70fe7d3b7265395108a7a748b8381e5455a3ae 100644 (file)
@@ -38,7 +38,7 @@ static int rtw_hw_suspend(struct adapter *padapter)
        LeaveAllPowerSaveMode(padapter);
 
        DBG_88E("==> rtw_hw_suspend\n");
-       _enter_pwrlock(&pwrpriv->lock);
+       mutex_lock(&pwrpriv->mutex_lock);
        pwrpriv->bips_processing = true;
        /* s1. */
        if (pnetdev) {
@@ -73,7 +73,7 @@ static int rtw_hw_suspend(struct adapter *padapter)
        pwrpriv->rf_pwrstate = rf_off;
        pwrpriv->bips_processing = false;
 
-       _exit_pwrlock(&pwrpriv->lock);
+       mutex_unlock(&pwrpriv->mutex_lock);
 
        return 0;
 
@@ -90,12 +90,12 @@ static int rtw_hw_resume(struct adapter *padapter)
 
        /* system resume */
        DBG_88E("==> rtw_hw_resume\n");
-       _enter_pwrlock(&pwrpriv->lock);
+       mutex_lock(&pwrpriv->mutex_lock);
        pwrpriv->bips_processing = true;
        rtw_reset_drv_sw(padapter);
 
        if (pm_netdev_open(pnetdev, false) != 0) {
-               _exit_pwrlock(&pwrpriv->lock);
+               mutex_unlock(&pwrpriv->mutex_lock);
                goto error_exit;
        }
 
@@ -113,7 +113,7 @@ static int rtw_hw_resume(struct adapter *padapter)
        pwrpriv->rf_pwrstate = rf_on;
        pwrpriv->bips_processing = false;
 
-       _exit_pwrlock(&pwrpriv->lock);
+       mutex_unlock(&pwrpriv->mutex_lock);
 
 
        return 0;
@@ -138,7 +138,7 @@ void ips_enter(struct adapter *padapter)
                return;
        }
 
-       _enter_pwrlock(&pwrpriv->lock);
+       mutex_lock(&pwrpriv->mutex_lock);
 
        pwrpriv->bips_processing = true;
 
@@ -159,7 +159,7 @@ void ips_enter(struct adapter *padapter)
        }
        pwrpriv->bips_processing = false;
 
-       _exit_pwrlock(&pwrpriv->lock);
+       mutex_unlock(&pwrpriv->mutex_lock);
 }
 
 int ips_leave(struct adapter *padapter)
@@ -171,7 +171,7 @@ int ips_leave(struct adapter *padapter)
        int keyid;
 
 
-       _enter_pwrlock(&pwrpriv->lock);
+       mutex_lock(&pwrpriv->mutex_lock);
 
        if ((pwrpriv->rf_pwrstate == rf_off) && (!pwrpriv->bips_processing)) {
                pwrpriv->bips_processing = true;
@@ -205,7 +205,7 @@ int ips_leave(struct adapter *padapter)
                pwrpriv->bpower_saving = false;
        }
 
-       _exit_pwrlock(&pwrpriv->lock);
+       mutex_unlock(&pwrpriv->mutex_lock);
 
        return result;
 }
@@ -504,7 +504,7 @@ void rtw_init_pwrctrl_priv(struct adapter *padapter)
 {
        struct pwrctrl_priv *pwrctrlpriv = &padapter->pwrctrlpriv;
 
-       _init_pwrlock(&pwrctrlpriv->lock);
+       mutex_init(&pwrctrlpriv->mutex_lock);
        pwrctrlpriv->rf_pwrstate = rf_on;
        pwrctrlpriv->ips_enter_cnts = 0;
        pwrctrlpriv->ips_leave_cnts = 0;
index 5475956c5ee5ce96a001695323046503bcdf4448..c53c9ea8344fc174d4e9332b9d585ed3dcfbfc3e 100644 (file)
@@ -36,6 +36,7 @@
 #include <linux/atomic.h>
 #include <linux/io.h>
 #include <linux/semaphore.h>
+#include <linux/mutex.h>
 #include <linux/sem.h>
 #include <linux/sched.h>
 #include <linux/etherdevice.h>
@@ -78,8 +79,6 @@ u8 *_rtw_malloc(u32 sz);
 
 void *rtw_malloc2d(int h, int w, int size);
 
-u32  _rtw_down_sema(struct semaphore *sema);
-
 void _rtw_init_queue(struct __queue *pqueue);
 
 struct rtw_netdev_priv_indicator {
index 5c34e567d3417a2027439c369c441fb228cfdff9..0dc63f2ff4421d08b41a88c927a44e45f86d7e18 100644 (file)
@@ -19,6 +19,7 @@
 
 #include <wlan_bssdef.h>
 #include <linux/semaphore.h>
+#include <linux/mutex.h>
 #include <linux/sem.h>
 
 /*
index 9680e2eab62facba7a7ce9eb251b304c306c34ef..18a9e744fcbe781b392f1fc950eb93d8e610d091 100644 (file)
@@ -92,21 +92,6 @@ struct reportpwrstate_parm {
        unsigned short rsvd;
 };
 
-static inline void _init_pwrlock(struct semaphore  *plock)
-{
-       sema_init(plock, 1);
-}
-
-static inline void _enter_pwrlock(struct semaphore  *plock)
-{
-       _rtw_down_sema(plock);
-}
-
-static inline void _exit_pwrlock(struct semaphore  *plock)
-{
-       up(plock);
-}
-
 #define LPS_DELAY_TIME 1*HZ /*  1 sec */
 
 #define EXE_PWR_NONE   0x01
@@ -157,7 +142,7 @@ enum { /*  for ips_mode */
 };
 
 struct pwrctrl_priv {
-       struct semaphore lock;
+       struct mutex mutex_lock;
        volatile u8 rpwm; /*  requested power state for fw */
        volatile u8 cpwm; /*  fw current power state. updated when
                           * 1. read from HCPWM 2. driver lowers power level */
index 764250b4ba861b7b512ff72dbaeb9e8585ab25ba..24d177489c8f4e4bf2c25ab5ad4e5f718bd79458 100644 (file)
@@ -55,13 +55,6 @@ void *rtw_malloc2d(int h, int w, int size)
        return a;
 }
 
-u32 _rtw_down_sema(struct semaphore *sema)
-{
-       if (down_interruptible(sema))
-               return _FAIL;
-       return _SUCCESS;
-}
-
 void   _rtw_init_queue(struct __queue *pqueue)
 {
        INIT_LIST_HEAD(&(pqueue->queue));
index 11d51a30170ffbd1a4d12b7ed7465461e3106555..a5ba1e4da15e5e36f9a608d13c367fa5b527e167 100644 (file)
@@ -238,7 +238,7 @@ static int rtw_suspend(struct usb_interface *pusb_intf, pm_message_t message)
        rtw_cancel_all_timer(padapter);
        LeaveAllPowerSaveMode(padapter);
 
-       _enter_pwrlock(&pwrpriv->lock);
+       mutex_lock(&pwrpriv->mutex_lock);
        /* s1. */
        if (pnetdev) {
                netif_carrier_off(pnetdev);
@@ -267,7 +267,7 @@ static int rtw_suspend(struct usb_interface *pusb_intf, pm_message_t message)
        rtw_free_network_queue(padapter, true);
 
        rtw_dev_unload(padapter);
-       _exit_pwrlock(&pwrpriv->lock);
+       mutex_unlock(&pwrpriv->mutex_lock);
 
        if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY))
                rtw_indicate_scan_done(padapter, 1);
@@ -298,7 +298,7 @@ static int rtw_resume_process(struct adapter *padapter)
                goto exit;
        }
 
-       _enter_pwrlock(&pwrpriv->lock);
+       mutex_lock(&pwrpriv->mutex_lock);
        rtw_reset_drv_sw(padapter);
        pwrpriv->bkeepfwalive = false;
 
@@ -309,7 +309,7 @@ static int rtw_resume_process(struct adapter *padapter)
        netif_device_attach(pnetdev);
        netif_carrier_on(pnetdev);
 
-       _exit_pwrlock(&pwrpriv->lock);
+       mutex_unlock(&pwrpriv->mutex_lock);
 
        rtw_roaming(padapter, NULL);