diff --git a/source/ccsp/components/common/DataModel/dml/components/DslhWmpDatabase/dslh_wmpdo_states.c b/source/ccsp/components/common/DataModel/dml/components/DslhWmpDatabase/dslh_wmpdo_states.c index 02decdd1d..a4c32060a 100644 --- a/source/ccsp/components/common/DataModel/dml/components/DslhWmpDatabase/dslh_wmpdo_states.c +++ b/source/ccsp/components/common/DataModel/dml/components/DslhWmpDatabase/dslh_wmpdo_states.c @@ -475,12 +475,14 @@ DslhWmpdoReset pMyObject->ResetObjVarArray(hThisObject); + AnscAcquireLock(&pMyObject->MpaWriteLock); if ( pMyObject->LockedEntity ) { AnscFreeMemory(pMyObject->LockedEntity); pMyObject->LockedEntity = NULL; } + AnscReleaseLock(&pMyObject->MpaWriteLock); if ( pMyObject->pRootObjName) { diff --git a/source/cosa/package/bmc2/components/Bmc2ComTerminal/bmc2_comto_management.c b/source/cosa/package/bmc2/components/Bmc2ComTerminal/bmc2_comto_management.c index cf17c55ec..04e6949fa 100644 --- a/source/cosa/package/bmc2/components/Bmc2ComTerminal/bmc2_comto_management.c +++ b/source/cosa/package/bmc2/components/Bmc2ComTerminal/bmc2_comto_management.c @@ -110,8 +110,10 @@ Bmc2ComtoGetDomainCount ) { PBMC2_COM_TERMINAL_OBJECT pMyObject = (PBMC2_COM_TERMINAL_OBJECT )hThisObject; - - return AnscSListQueryDepth(&pMyObject->ComdoSList); + AnscAcquireLock(&pMyObject->ComdoSListLock); + ULONG domainCount = AnscSListQueryDepth(&pMyObject->ComdoSList); + AnscReleaseLock(&pMyObject->ComdoSListLock); + return domainCount; } diff --git a/source/cosa/package/system/components/SysRecycleBin/sys_rbo_access.c b/source/cosa/package/system/components/SysRecycleBin/sys_rbo_access.c index 13914845f..93fdffdb8 100644 --- a/source/cosa/package/system/components/SysRecycleBin/sys_rbo_access.c +++ b/source/cosa/package/system/components/SysRecycleBin/sys_rbo_access.c @@ -249,12 +249,13 @@ SysRboGetFolderByIndex PSYS_REPOSITORY_FOLDER_OBJECT pRepFolder = (PSYS_REPOSITORY_FOLDER_OBJECT)NULL; PSINGLE_LINK_ENTRY pSLinkEntry = NULL; + AnscAcquireLock(&pMyObject->FolderQueueLock); if ( ulIndex >= AnscQueueQueryDepth(&pMyObject->FolderQueue) ) { + AnscReleaseLock(&pMyObject->FolderQueueLock); return (ANSC_HANDLE)NULL; } - AnscAcquireLock(&pMyObject->FolderQueueLock); pSLinkEntry = AnscQueueSearchEntryByIndex(&pMyObject->FolderQueue, ulIndex); AnscReleaseLock(&pMyObject->FolderQueueLock); @@ -355,12 +356,13 @@ SysRboGetRecordByIndex PSYS_REPOSITORY_RECORD_OBJECT pRepRecord = (PSYS_REPOSITORY_RECORD_OBJECT)NULL; PSINGLE_LINK_ENTRY pSLinkEntry = NULL; + AnscAcquireLock(&pMyObject->RecordQueueLock); if ( ulIndex >= AnscQueueQueryDepth(&pMyObject->RecordQueue) ) { + AnscReleaseLock(&pMyObject->RecordQueueLock); return (ANSC_HANDLE)NULL; } - AnscAcquireLock(&pMyObject->RecordQueueLock); pSLinkEntry = AnscQueueSearchEntryByIndex(&pMyObject->RecordQueue, ulIndex); AnscReleaseLock(&pMyObject->RecordQueueLock); diff --git a/source/util_api/ansc/AnscCoVer3/ansc_cover3_base.c b/source/util_api/ansc/AnscCoVer3/ansc_cover3_base.c index ce41b2bf9..75ee10dc9 100644 --- a/source/util_api/ansc/AnscCoVer3/ansc_cover3_base.c +++ b/source/util_api/ansc/AnscCoVer3/ansc_cover3_base.c @@ -194,7 +194,10 @@ AnscCoVer3Remove pMyObject->bShuttingDown = TRUE; /* wait for all tasks to quit */ - while ( pMyObject->EngineTaskCount > 0 ) + AnscAcquireLock(&pMyObject->EtoAccessLock); + ULONG pEngineTaskCount_local = pMyObject->EngineTaskCount; + AnscReleaseLock(&pMyObject->EtoAccessLock); + while ( pEngineTaskCount_local > 0 ) { AnscSleep(100); } diff --git a/source/util_api/ansc/AnscDaemonEngineUdp/ansc_deuo_process.c b/source/util_api/ansc/AnscDaemonEngineUdp/ansc_deuo_process.c index 5ed0e8071..f8925a0f6 100644 --- a/source/util_api/ansc/AnscDaemonEngineUdp/ansc_deuo_process.c +++ b/source/util_api/ansc/AnscDaemonEngineUdp/ansc_deuo_process.c @@ -113,7 +113,9 @@ AnscDeuoRecv UNREFERENCED_PARAMETER(hThisObject); ANSC_STATUS returnStatus = ANSC_STATUS_SUCCESS; PANSC_DAEMON_SOCKET_UDP_OBJECT pSocket = (PANSC_DAEMON_SOCKET_UDP_OBJECT)hSocket; + AnscAcquireLock(&pSocket->OpLock); PANSC_DSUO_PACKET_OBJECT pPacket = (PANSC_DSUO_PACKET_OBJECT )pSocket->hPacket; + AnscReleaseLock(&pSocket->OpLock); pSocket->RecvBytesCount += pPacket->RecvPacketSize; pSocket->LastRecvAt = AnscGetTickInSeconds(); diff --git a/source/util_api/ansc/AnscDaemonEngineUdp/ansc_deuo_recv.c b/source/util_api/ansc/AnscDaemonEngineUdp/ansc_deuo_recv.c index 47742cebc..c164e505a 100644 --- a/source/util_api/ansc/AnscDaemonEngineUdp/ansc_deuo_recv.c +++ b/source/util_api/ansc/AnscDaemonEngineUdp/ansc_deuo_recv.c @@ -72,7 +72,7 @@ #include "ansc_deuo_global.h" - +#include /********************************************************************** @@ -261,7 +261,10 @@ AnscDeuoRecvTask ); } - if ( pSocket->bRecvEnabled ) + AnscAcquireLock(&pSocket->OpLock); + bool bRecvEnabled_local = pSocket->bRecvEnabled; + AnscReleaseLock(&pSocket->OpLock); + if ( bRecvEnabled_local ) { pSocket->SetPacket ( diff --git a/source/util_api/ansc/AnscDaemonServerTcp/ansc_dsto_management.c b/source/util_api/ansc/AnscDaemonServerTcp/ansc_dsto_management.c index ef44af536..bdcb6e11f 100644 --- a/source/util_api/ansc/AnscDaemonServerTcp/ansc_dsto_management.c +++ b/source/util_api/ansc/AnscDaemonServerTcp/ansc_dsto_management.c @@ -558,7 +558,9 @@ AnscDstoAssignEngine } else { + AnscAcquireLock(&pMyObject->EngineQueueLock); pSLinkEntry = AnscQueueGetFirstEntry(&pMyObject->EngineQueue); + AnscReleaseLock(&pMyObject->EngineQueueLock); pEngine = ACCESS_ANSC_DAEMON_ENGINE_TCP_OBJECT(pSLinkEntry); } } diff --git a/source/util_api/ansc/AnscDaemonServerUdp/ansc_dsuo_worker.c b/source/util_api/ansc/AnscDaemonServerUdp/ansc_dsuo_worker.c index 7c305829a..ddde45c25 100644 --- a/source/util_api/ansc/AnscDaemonServerUdp/ansc_dsuo_worker.c +++ b/source/util_api/ansc/AnscDaemonServerUdp/ansc_dsuo_worker.c @@ -109,8 +109,12 @@ AnscDsuoWorkerTask PANSC_DAEMON_SERVER_UDP_OBJECT pMyObject = (PANSC_DAEMON_SERVER_UDP_OBJECT)pSocket->hDaemonServer; PANSC_DAEMON_ENGINE_UDP_OBJECT pEngine = (PANSC_DAEMON_ENGINE_UDP_OBJECT)pSocket->hDaemonEngine; PANSC_DSUO_WORKER_OBJECT pWorker = (PANSC_DSUO_WORKER_OBJECT )pMyObject->hWorker; + + AnscAcquireLock(&pSocket->OpLock); PANSC_DSUO_PACKET_OBJECT pPacket = (PANSC_DSUO_PACKET_OBJECT )pSocket->hPacket; + AnscReleaseLock(&pSocket->OpLock); + if ( !pPacket ) { return ANSC_STATUS_UNAPPLICABLE; diff --git a/source/util_api/ansc/AnscDaemonSocketUdp/ansc_dkuo_process.c b/source/util_api/ansc/AnscDaemonSocketUdp/ansc_dkuo_process.c index cbce8ef75..52b3e5baa 100644 --- a/source/util_api/ansc/AnscDaemonSocketUdp/ansc_dkuo_process.c +++ b/source/util_api/ansc/AnscDaemonSocketUdp/ansc_dkuo_process.c @@ -120,7 +120,9 @@ AnscDkuoRecv ANSC_STATUS returnStatus = ANSC_STATUS_SUCCESS; PANSC_DAEMON_SOCKET_UDP_OBJECT pMyObject = (PANSC_DAEMON_SOCKET_UDP_OBJECT)hThisObject; PANSC_DAEMON_SERVER_UDP_OBJECT pServer = (PANSC_DAEMON_SERVER_UDP_OBJECT)pMyObject->hDaemonServer; + AnscAcquireLock(&pMyObject->OpLock); PANSC_DSUO_PACKET_OBJECT pPacket = (PANSC_DSUO_PACKET_OBJECT )pMyObject->hPacket; + AnscReleaseLock(&pMyObject->OpLock); ULONG ulPmode = ANSC_DSUOWO_PMODE_DISCARD; BOOL bFreePacket = TRUE; diff --git a/source/util_api/ansc/AnscDaemonSocketUdp/ansc_dkuo_states.c b/source/util_api/ansc/AnscDaemonSocketUdp/ansc_dkuo_states.c index 4f0882856..e7e81ff5d 100644 --- a/source/util_api/ansc/AnscDaemonSocketUdp/ansc_dkuo_states.c +++ b/source/util_api/ansc/AnscDaemonSocketUdp/ansc_dkuo_states.c @@ -513,8 +513,12 @@ AnscDkuoGetPacket ) { PANSC_DAEMON_SOCKET_UDP_OBJECT pMyObject = (PANSC_DAEMON_SOCKET_UDP_OBJECT)hThisObject; + ANSC_HANDLE hPacket; - return pMyObject->hPacket; + AnscAcquireLock(&pMyObject->OpLock); + hPacket = pMyObject->hPacket; + AnscReleaseLock(&pMyObject->OpLock); + return hPacket; } @@ -649,14 +653,14 @@ AnscDkuoReset /* CID: 137150 Data race condition */ AnscAcquireLock(&pMyObject->OpLock); pMyObject->hPacket = (ANSC_HANDLE)NULL; + pMyObject->bSendEnabled = TRUE; + pMyObject->bRecvEnabled = TRUE; AnscReleaseLock(&pMyObject->OpLock); pMyObject->RecvBytesCount = 0; pMyObject->SendBytesCount = 0; pMyObject->LastRecvAt = 0; pMyObject->LastSendAt = 0; pMyObject->bClosed = TRUE; - pMyObject->bRecvEnabled = TRUE; - pMyObject->bSendEnabled = TRUE; return ANSC_STATUS_SUCCESS; } diff --git a/source/util_api/ansc/AnscPlatform/ansc_task.c b/source/util_api/ansc/AnscPlatform/ansc_task.c index a420ddf31..a8f57a580 100644 --- a/source/util_api/ansc/AnscPlatform/ansc_task.c +++ b/source/util_api/ansc/AnscPlatform/ansc_task.c @@ -197,17 +197,19 @@ AnscFreeTaskRecord PANSC_TASK_RECORD pTaskRecord ) { + AnscAcquireSpinLock(&pTaskRecord->AccessSpinLock); if( pTaskRecord->RefCount == 1 ) { pTaskRecord->RefCount = 0; pTaskRecord->Handle = 0; + AnscReleaseSpinLock(&pTaskRecord->AccessSpinLock); AnscFreeMemory(pTaskRecord); } else { AnscTrace("WARNING - AnscFreeTaskRecord, task record %lu-%p reference count is %lu!\n", pTaskRecord->Handle,pTaskRecord, pTaskRecord->RefCount); + AnscReleaseSpinLock(&pTaskRecord->AccessSpinLock); } - } diff --git a/source/util_api/asn.1/components/al_pki/alcert_base.c b/source/util_api/asn.1/components/al_pki/alcert_base.c index 8f2b44b92..9644164e5 100644 --- a/source/util_api/asn.1/components/al_pki/alcert_base.c +++ b/source/util_api/asn.1/components/al_pki/alcert_base.c @@ -353,8 +353,10 @@ ALCERTGetCACount { return 0; } - - return AnscSListQueryDepth(&pThisObject->sCAList); + AnscAcquireLock(&pThisObject->CALock); + ULONG caCount = AnscSListQueryDepth(&pThisObject->sCAList); + AnscReleaseLock(&pThisObject->CALock); + return caCount; } ULONG @@ -803,13 +805,11 @@ ALCERTRemoveAllCAs } } - AnscReleaseLock(&pThisObject->CALock); - - /* * reset the SList; */ AnscSListInitializeHeader(&pThisObject->sCAList); + AnscReleaseLock(&pThisObject->CALock); return ANSC_STATUS_SUCCESS; } diff --git a/source/util_api/ccsp_msg_bus/ccsp_base_api_srv.c b/source/util_api/ccsp_msg_bus/ccsp_base_api_srv.c index 57627c9e8..46a8a86c2 100644 --- a/source/util_api/ccsp_msg_bus/ccsp_base_api_srv.c +++ b/source/util_api/ccsp_msg_bus/ccsp_base_api_srv.c @@ -516,7 +516,6 @@ void CcspBaseIf_deadlock_detection_log_save parameterAttributeStruct_t * parameterAttribute = 0; //setParameterAttributes char * str = NULL; //AddTblRow / DeleteTblRow unsigned long size = 0; - unsigned long index = deadlock_detection_log_index; unsigned int i = 0; char timestr[128] = {0}; time_t t1 = GetCurrentTime(); @@ -528,6 +527,7 @@ void CcspBaseIf_deadlock_detection_log_save pthread_mutex_lock(&(info->info_mutex)); + unsigned long index = deadlock_detection_log_index; if ( info->messageType ) { size = info->size; diff --git a/source/util_api/http/components/HttpMessageBody/http_mbo_mp_util.c b/source/util_api/http/components/HttpMessageBody/http_mbo_mp_util.c index 39f20fea8..2da6e6c79 100644 --- a/source/util_api/http/components/HttpMessageBody/http_mbo_mp_util.c +++ b/source/util_api/http/components/HttpMessageBody/http_mbo_mp_util.c @@ -465,6 +465,7 @@ HttpMboSaveNonFileData } } + AnscAcquireLock(&pMyObject->BdoQueueLock); pSLinkEntry = AnscQueueGetLastEntry(&pMyObject->BdoQueue); if ( pSLinkEntry ) @@ -476,6 +477,7 @@ HttpMboSaveNonFileData pSavedBdo = AnscAllocateBdo(HTTP_MBO_MP_PART_BDO_SIZE, 0, 0); if ( !pSavedBdo ) { + AnscReleaseLock(&pMyObject->BdoQueueLock); return ANSC_STATUS_RESOURCES; } AnscQueuePushEntry(&pMyObject->BdoQueue, &pSavedBdo->Linkage); @@ -493,10 +495,12 @@ HttpMboSaveNonFileData pSavedBdo = AnscAllocateBdo(ulNewBdoSize, 0, 0); if ( !pSavedBdo ) { + AnscReleaseLock(&pMyObject->BdoQueueLock); return ANSC_STATUS_RESOURCES; } AnscQueuePushEntry(&pMyObject->BdoQueue, &pSavedBdo->Linkage); } + AnscReleaseLock(&pMyObject->BdoQueueLock); #ifdef _DEBUG /* kang debug */ AnscTrace("Non file form data saved %lu bytes.\n", ulDataLen); diff --git a/source/util_api/http/components/HttpProxySession/http_pso_management.c b/source/util_api/http/components/HttpProxySession/http_pso_management.c index 313960a27..63917f5c6 100644 --- a/source/util_api/http/components/HttpProxySession/http_pso_management.c +++ b/source/util_api/http/components/HttpProxySession/http_pso_management.c @@ -463,7 +463,9 @@ HttpPsoAddNewBmoReq { pBmoReq->SetHfpIf ((ANSC_HANDLE)pBmoReq, (ANSC_HANDLE)pHfpIf ); pBmoReq->SetTmhIf ((ANSC_HANDLE)pBmoReq, (ANSC_HANDLE)pTmhClientIf ); + AnscAcquireLock(&pMyObject->BmoReqSListLock); pBmoReq->SetTransactionId((ANSC_HANDLE)pBmoReq, AnscSListQueryDepth(&pMyObject->BmoReqSList)); + AnscReleaseLock(&pMyObject->BmoReqSListLock); } AnscAcquireLock (&pMyObject->BmoReqSListLock); @@ -522,7 +524,9 @@ HttpPsoAddNewBmoRep { pBmoRep->SetHfpIf ((ANSC_HANDLE)pBmoRep, (ANSC_HANDLE)pHfpIf ); pBmoRep->SetTmhIf ((ANSC_HANDLE)pBmoRep, (ANSC_HANDLE)pTmhServerIf ); + AnscAcquireLock(&pMyObject->BmoRepSListLock); pBmoRep->SetTransactionId((ANSC_HANDLE)pBmoRep, AnscSListQueryDepth(&pMyObject->BmoRepSList)); + AnscReleaseLock(&pMyObject->BmoRepSListLock); } AnscAcquireLock (&pMyObject->BmoRepSListLock);