rtl8723ds: Fix a couple of errors in overlapping locks

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
This commit is contained in:
Larry Finger 2017-10-25 13:56:39 -05:00
parent 1621248cc1
commit c69a20ba17
2 changed files with 14 additions and 25 deletions

View File

@ -25,7 +25,7 @@ extern void indicate_wx_scan_complete_event(_adapter *padapter);
extern u8 rtw_do_join(_adapter *padapter); extern u8 rtw_do_join(_adapter *padapter);
sint _rtw_init_mlme_priv(_adapter *padapter) static sint _rtw_init_mlme_priv(_adapter *padapter)
{ {
sint i; sint i;
u8 *pbuf; u8 *pbuf;
@ -274,7 +274,7 @@ exit:
} }
#endif /* defined(CONFIG_WFD) && defined(CONFIG_IOCTL_CFG80211) */ #endif /* defined(CONFIG_WFD) && defined(CONFIG_IOCTL_CFG80211) */
void _rtw_free_mlme_priv(struct mlme_priv *pmlmepriv) static void _rtw_free_mlme_priv(struct mlme_priv *pmlmepriv)
{ {
if (NULL == pmlmepriv) { if (NULL == pmlmepriv) {
rtw_warn_on(1); rtw_warn_on(1);
@ -292,7 +292,7 @@ exit:
return; return;
} }
sint _rtw_enqueue_network(_queue *queue, struct wlan_network *pnetwork) static sint _rtw_enqueue_network(_queue *queue, struct wlan_network *pnetwork)
{ {
_irqL irqL; _irqL irqL;
@ -553,7 +553,7 @@ u8 *rtw_get_capability_from_ie(u8 *ie)
u16 rtw_get_capability(WLAN_BSSID_EX *bss) u16 rtw_get_capability(WLAN_BSSID_EX *bss)
{ {
u16 val; __le16 val;
_rtw_memcpy((u8 *)&val, rtw_get_capability_from_ie(bss->IEs), 2); _rtw_memcpy((u8 *)&val, rtw_get_capability_from_ie(bss->IEs), 2);
@ -1405,7 +1405,7 @@ static void free_scanqueue(struct mlme_priv *pmlmepriv)
} }
void rtw_reset_rx_info(struct debug_priv *pdbgpriv) static void rtw_reset_rx_info(struct debug_priv *pdbgpriv)
{ {
pdbgpriv->dbg_rx_ampdu_drop_count = 0; pdbgpriv->dbg_rx_ampdu_drop_count = 0;
pdbgpriv->dbg_rx_ampdu_forced_indicate_count = 0; pdbgpriv->dbg_rx_ampdu_forced_indicate_count = 0;
@ -1506,8 +1506,6 @@ void rtw_free_assoc_resources(_adapter *adapter, int lock_scanned_queue)
adapter->securitypriv.key_mask = 0; adapter->securitypriv.key_mask = 0;
rtw_reset_rx_info(pdbgpriv); rtw_reset_rx_info(pdbgpriv);
} }
/* /*
@ -1518,8 +1516,6 @@ void rtw_indicate_connect(_adapter *padapter)
struct mlme_priv *pmlmepriv = &padapter->mlmepriv; struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
struct xmit_priv *pxmitpriv = &padapter->xmitpriv; struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
pmlmepriv->to_join = _FALSE; pmlmepriv->to_join = _FALSE;
if (!check_fwstate(&padapter->mlmepriv, _FW_LINKED)) { if (!check_fwstate(&padapter->mlmepriv, _FW_LINKED)) {
@ -1970,9 +1966,8 @@ void rtw_joinbss_event_prehandle(_adapter *adapter, u8 *pbuf)
the_same_macaddr = _rtw_memcmp(pnetwork->network.MacAddress, cur_network->network.MacAddress, ETH_ALEN); the_same_macaddr = _rtw_memcmp(pnetwork->network.MacAddress, cur_network->network.MacAddress, ETH_ALEN);
pnetwork->network.Length = get_WLAN_BSSID_EX_sz(&pnetwork->network); pnetwork->network.Length = get_WLAN_BSSID_EX_sz(&pnetwork->network);
if (pnetwork->network.Length > sizeof(WLAN_BSSID_EX)) { if (pnetwork->network.Length > sizeof(WLAN_BSSID_EX))
goto ignore_joinbss_callback; return;
}
_enter_critical_bh(&pmlmepriv->lock, &irqL); _enter_critical_bh(&pmlmepriv->lock, &irqL);
@ -1995,9 +1990,7 @@ void rtw_joinbss_event_prehandle(_adapter *adapter, u8 *pbuf)
pcur_sta = rtw_get_stainfo(pstapriv, cur_network->network.MacAddress); pcur_sta = rtw_get_stainfo(pstapriv, cur_network->network.MacAddress);
if (pcur_sta) { if (pcur_sta) {
/* _enter_critical_bh(&(pstapriv->sta_hash_lock), &irqL2); */
rtw_free_stainfo(adapter, pcur_sta); rtw_free_stainfo(adapter, pcur_sta);
/* _exit_critical_bh(&(pstapriv->sta_hash_lock), &irqL2); */
} }
ptarget_wlan = rtw_find_network(&pmlmepriv->scanned_queue, pnetwork->network.MacAddress); ptarget_wlan = rtw_find_network(&pmlmepriv->scanned_queue, pnetwork->network.MacAddress);
@ -2006,7 +1999,6 @@ void rtw_joinbss_event_prehandle(_adapter *adapter, u8 *pbuf)
ptarget_wlan->fixed = _TRUE; ptarget_wlan->fixed = _TRUE;
} }
} }
} else { } else {
ptarget_wlan = _rtw_find_same_network(&pmlmepriv->scanned_queue, pnetwork); ptarget_wlan = _rtw_find_same_network(&pmlmepriv->scanned_queue, pnetwork);
if (check_fwstate(pmlmepriv, WIFI_STATION_STATE) == _TRUE) { if (check_fwstate(pmlmepriv, WIFI_STATION_STATE) == _TRUE) {
@ -2043,15 +2035,12 @@ void rtw_joinbss_event_prehandle(_adapter *adapter, u8 *pbuf)
/* s5. Cancle assoc_timer */ /* s5. Cancle assoc_timer */
_cancel_timer(&pmlmepriv->assoc_timer, &timer_cancelled); _cancel_timer(&pmlmepriv->assoc_timer, &timer_cancelled);
} else { } else {
_exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL);
goto ignore_joinbss_callback; goto ignore_joinbss_callback;
} }
_exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL);
} else if (pnetwork->join_res == -4) { } else if (pnetwork->join_res == -4) {
rtw_reset_securitypriv(adapter); rtw_reset_securitypriv(adapter);
_set_timer(&pmlmepriv->assoc_timer, 1); _set_timer(&pmlmepriv->assoc_timer, 1);
@ -2446,7 +2435,7 @@ err_2:
} }
#endif #endif
void rtw_sta_mstatus_disc_rpt(_adapter *adapter, u8 mac_id) static void rtw_sta_mstatus_disc_rpt(_adapter *adapter, u8 mac_id)
{ {
struct macid_ctl_t *macid_ctl = &adapter->dvobj->macid_ctl; struct macid_ctl_t *macid_ctl = &adapter->dvobj->macid_ctl;
@ -3167,7 +3156,7 @@ int rtw_select_roaming_candidate(struct mlme_priv *mlme)
if (mlme->cur_network_scanned == NULL) { if (mlme->cur_network_scanned == NULL) {
rtw_warn_on(1); rtw_warn_on(1);
goto exit; return ret;
} }
_enter_critical_bh(&(mlme->scanned_queue.lock), &irqL); _enter_critical_bh(&(mlme->scanned_queue.lock), &irqL);
@ -4646,9 +4635,9 @@ static bool wfd_st_match_rule(_adapter *adapter, u8 *local_naddr, u8 *local_port
{ {
struct wifi_display_info *wfdinfo = &adapter->wfd_info; struct wifi_display_info *wfdinfo = &adapter->wfd_info;
if (ntohs(*((u16 *)local_port)) == wfdinfo->rtsp_ctrlport if (ntohs(*((__be16 *)local_port)) == wfdinfo->rtsp_ctrlport
|| ntohs(*((u16 *)local_port)) == wfdinfo->tdls_rtsp_ctrlport || ntohs(*((__be16 *)local_port)) == wfdinfo->tdls_rtsp_ctrlport
|| ntohs(*((u16 *)remote_port)) == wfdinfo->peer_rtsp_ctrlport) || ntohs(*((__be16 *)remote_port)) == wfdinfo->peer_rtsp_ctrlport)
return _TRUE; return _TRUE;
return _FALSE; return _FALSE;
} }

View File

@ -56,7 +56,7 @@ enum {
#define RTW_DBG_EXPR(EXPR) do {} while (0) #define RTW_DBG_EXPR(EXPR) do {} while (0)
#define RTW_DBGDUMP 0 /* 'stream' for _dbgdump */ #define RTW_DBGDUMP NULL /* 'stream' for _dbgdump */
/* don't use these 3 APIs anymore, will be removed later */ /* don't use these 3 APIs anymore, will be removed later */
#define RT_TRACE(_Comp, _Level, Fmt) do {} while (0) #define RT_TRACE(_Comp, _Level, Fmt) do {} while (0)
@ -259,7 +259,7 @@ extern uint rtw_drv_log_level;
if (sel == RTW_DBGDUMP)\ if (sel == RTW_DBGDUMP)\
RTW_PRINT(fmt, ##arg); \ RTW_PRINT(fmt, ##arg); \
else {\ else {\
_seqdump((struct seq_file *)sel, fmt, ##arg) /*rtw_warn_on(1)*/; \ _seqdump(sel, fmt, ##arg) /*rtw_warn_on(1)*/; \
} \ } \
} while (0) } while (0)