qcacld-3.0: Fix crash in wlan_hdd_tdls_check_power_save_prohibited

qcacld-2.0 to qcacld-3.0 propagation

Due to pre-emption there could be probability that tdls context
is accessed in wlan_hdd_tdls_check_power_save_prohibited after it's
released. This will result in kernel panic.

Protect tdls context with mutex lock before accessing

Change-Id: I33369320de5b0aadae661d7d27fbc5ba18e9e409
CRs-Fixed: 990645
This commit is contained in:
Selvaraj, Sridhar 2016-07-31 14:58:59 +05:30 • committed by Gerrit - the friendly Code Review server
commit b5cce8783e

View file

@ -2456,19 +2456,17 @@ void wlan_hdd_tdls_connection_callback(hdd_adapter_t *pAdapter)
*/
void wlan_hdd_tdls_disconnection_callback(hdd_adapter_t *pAdapter)
{
tdlsCtx_t *pHddTdlsCtx = WLAN_HDD_GET_TDLS_CTX_PTR(pAdapter);
hdd_context_t *pHddCtx = WLAN_HDD_GET_CTX(pAdapter);
if ((NULL == pHddCtx) || (NULL == pHddTdlsCtx)) {
QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_ERROR,
FL("pHddCtx or pHddTdlsCtx points to NULL"));
return;
}
tdlsCtx_t *pHddTdlsCtx;
hdd_context_t *pHddCtx;
hddLog(LOG1, "%s", __func__);
pHddCtx = WLAN_HDD_GET_CTX(pAdapter);
if (0 != wlan_hdd_validate_context(pHddCtx))
return;
mutex_lock(&pHddCtx->tdls_lock);
pHddTdlsCtx = WLAN_HDD_GET_TDLS_CTX_PTR(pAdapter);
if (NULL == pHddTdlsCtx) {
mutex_unlock(&pHddCtx->tdls_lock);
QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_ERROR,