Check LL cb against NULL to prevent a crash when WDA has deregistered
while Riva still sends notifications.
Change-Id: Ie90c76673a48c60b357eb9df0fcba28273246007
CRs-fixed: 439808
(cherry picked from commit b77f24b0fc65b6dba15651a970f67ede72f39beb)
diff --git a/CORE/WDI/CP/src/wlan_qct_wdi.c b/CORE/WDI/CP/src/wlan_qct_wdi.c
index 4d53521..f46bb25 100644
--- a/CORE/WDI/CP/src/wlan_qct_wdi.c
+++ b/CORE/WDI/CP/src/wlan_qct_wdi.c
@@ -18333,8 +18333,11 @@
wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
- /*Notify UMAC*/
- pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
+ if ( pWDICtx->wdiLowLevelIndCB )
+ {
+ /*Notify UMAC of indication*/
+ pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
+ }
return WDI_STATUS_SUCCESS;
}/*WDI_ProcessLowRSSIInd*/
@@ -18385,8 +18388,11 @@
/*Fill in the indication parameters*/
wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
- /*Notify UMAC*/
- pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
+ if ( pWDICtx->wdiLowLevelIndCB )
+ {
+ /*Notify UMAC*/
+ pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
+ }
return WDI_STATUS_SUCCESS;
}/*WDI_ProcessMissedBeaconInd*/
@@ -18439,8 +18445,11 @@
/* ! TO DO - fill in from HAL struct:
wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
- /*Notify UMAC*/
- pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
+ if ( pWDICtx->wdiLowLevelIndCB )
+ {
+ /*Notify UMAC*/
+ pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
+ }
return WDI_STATUS_SUCCESS;
}/*WDI_ProcessUnkAddrFrameInd*/
@@ -18506,8 +18515,12 @@
pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
- /*Notify UMAC*/
- pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
+
+ if ( pWDICtx->wdiLowLevelIndCB )
+ {
+ /*Notify UMAC*/
+ pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
+ }
return WDI_STATUS_SUCCESS;
}/*WDI_ProcessMicFailureInd*/
@@ -18563,8 +18576,11 @@
wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
- /*Notify UMAC*/
- pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
+ if ( pWDICtx->wdiLowLevelIndCB )
+ {
+ /*Notify UMAC*/
+ pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
+ }
return WDI_STATUS_SUCCESS;
}/*WDI_ProcessFatalErrorInd*/
@@ -18627,8 +18643,11 @@
wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
halDelSTACtx.reasonCode;
- /*Notify UMAC*/
- pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
+ if ( pWDICtx->wdiLowLevelIndCB )
+ {
+ /*Notify UMAC*/
+ pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
+ }
return WDI_STATUS_SUCCESS;
}/*WDI_ProcessDelSTAInd*/
@@ -18692,8 +18711,11 @@
wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
- /*Notify UMAC*/
- pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
+ if ( pWDICtx->wdiLowLevelIndCB )
+ {
+ /*Notify UMAC*/
+ pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
+ }
return WDI_STATUS_SUCCESS;
}/*WDI_ProcessCoexInd*/
@@ -18744,8 +18766,11 @@
wdiInd.wdiIndicationData.tx_complete_status
= halTxComplIndMsg.txComplParams.status;
- /*Notify UMAC*/
- pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
+ if ( pWDICtx->wdiLowLevelIndCB )
+ {
+ /*Notify UMAC*/
+ pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
+ }
return WDI_STATUS_SUCCESS;
}/*WDI_ProcessTxCompleteInd*/
@@ -18879,8 +18904,11 @@
wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
= halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
- /*Notify UMAC*/
- pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
+ if ( pWDICtx->wdiLowLevelIndCB )
+ {
+ /*Notify UMAC*/
+ pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
+ }
return WDI_STATUS_SUCCESS;
}/*WDI_ProcessNoaAttrInd*/
@@ -18913,8 +18941,11 @@
/*Fill in the indication parameters*/
wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
- /*Notify UMAC*/
- pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
+ if ( pWDICtx->wdiLowLevelIndCB )
+ {
+ /*Notify UMAC*/
+ pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
+ }
return WDI_STATUS_SUCCESS;
}/*WDI_ProcessTxPerHitInd*/
@@ -23299,8 +23330,11 @@
wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
- /*Notify UMAC*/
- pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
+ if ( pWDICtx->wdiLowLevelIndCB )
+ {
+ /*Notify UMAC*/
+ pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
+ }
return WDI_STATUS_SUCCESS;
}
@@ -25178,8 +25212,12 @@
&(pWakeReasonParams->aDataStart[0]),
pWakeReasonParams->ulStoredDataLen);
- /*Notify UMAC*/
- pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
+
+ if ( pWDICtx->wdiLowLevelIndCB )
+ {
+ /*Notify UMAC*/
+ pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
+ }
//Free memory allocated for WDI_WakeReasonIndType structure
wpalMemoryFree(pWdiInd);