Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f18c566e authored by Binoy Jayan's avatar Binoy Jayan Committed by Greg Kroah-Hartman
Browse files

rtl8188eu: pwrctrl_priv: Replace semaphore 'lock' with mutex



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: default avatarBinoy Jayan <binoy.jayan@linaro.org>
Reviewed-by: default avatarArnd Bergmann <arnd@arndb.de>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 16677cca
Loading
Loading
Loading
Loading
+10 −10
Original line number Diff line number Diff line
@@ -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;
+1 −2
Original line number Diff line number Diff line
@@ -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 {
+1 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@

#include <wlan_bssdef.h>
#include <linux/semaphore.h>
#include <linux/mutex.h>
#include <linux/sem.h>

/*
+1 −16
Original line number Diff line number Diff line
@@ -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 */
+0 −7
Original line number Diff line number Diff line
@@ -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));
Loading