mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-03 05:36:40 +07:00
rtlwifi: Fix use of mutex in interrupt code
A previous conversion from semaphoreto mutexes missed the fact that one of the semaphores was used in interrupt code. Fixed by changing to a spinlock. Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
f0b3e4b730
commit
d704300fa5
@ -309,8 +309,8 @@ int rtl_init_core(struct ieee80211_hw *hw)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* <4> locks */
|
/* <4> locks */
|
||||||
mutex_init(&rtlpriv->locks.ips_mutex);
|
|
||||||
mutex_init(&rtlpriv->locks.conf_mutex);
|
mutex_init(&rtlpriv->locks.conf_mutex);
|
||||||
|
spin_lock_init(&rtlpriv->locks.ips_lock);
|
||||||
spin_lock_init(&rtlpriv->locks.irq_th_lock);
|
spin_lock_init(&rtlpriv->locks.irq_th_lock);
|
||||||
spin_lock_init(&rtlpriv->locks.h2c_lock);
|
spin_lock_init(&rtlpriv->locks.h2c_lock);
|
||||||
spin_lock_init(&rtlpriv->locks.rf_ps_lock);
|
spin_lock_init(&rtlpriv->locks.rf_ps_lock);
|
||||||
|
@ -286,8 +286,9 @@ void rtl_ips_nic_on(struct ieee80211_hw *hw)
|
|||||||
struct rtl_priv *rtlpriv = rtl_priv(hw);
|
struct rtl_priv *rtlpriv = rtl_priv(hw);
|
||||||
struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw));
|
struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw));
|
||||||
enum rf_pwrstate rtstate;
|
enum rf_pwrstate rtstate;
|
||||||
|
unsigned long flags;
|
||||||
|
|
||||||
mutex_lock(&rtlpriv->locks.ips_mutex);
|
spin_lock_irqsave(&rtlpriv->locks.ips_lock, flags);
|
||||||
|
|
||||||
if (ppsc->b_inactiveps) {
|
if (ppsc->b_inactiveps) {
|
||||||
rtstate = ppsc->rfpwr_state;
|
rtstate = ppsc->rfpwr_state;
|
||||||
@ -303,7 +304,7 @@ void rtl_ips_nic_on(struct ieee80211_hw *hw)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mutex_unlock(&rtlpriv->locks.ips_mutex);
|
spin_unlock_irqrestore(&rtlpriv->locks.ips_lock, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*for FW LPS*/
|
/*for FW LPS*/
|
||||||
|
@ -1192,11 +1192,11 @@ struct rtl_hal_cfg {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct rtl_locks {
|
struct rtl_locks {
|
||||||
/*sem */
|
/* mutex */
|
||||||
struct mutex ips_mutex;
|
|
||||||
struct mutex conf_mutex;
|
struct mutex conf_mutex;
|
||||||
|
|
||||||
/*spin lock */
|
/*spin lock */
|
||||||
|
spinlock_t ips_lock;
|
||||||
spinlock_t irq_th_lock;
|
spinlock_t irq_th_lock;
|
||||||
spinlock_t h2c_lock;
|
spinlock_t h2c_lock;
|
||||||
spinlock_t rf_ps_lock;
|
spinlock_t rf_ps_lock;
|
||||||
|
Loading…
Reference in New Issue
Block a user