ib_status = pDevice->VerbsInterface.Verbs.\r
query_ca(pDevice->VerbsInterface.Verbs.p_hca_obj, attr, &size, NULL);\r
if (ib_status != IB_SUCCESS) {\r
- ExFreePool(attr);\r
+ ExFreePoolWithTag(attr, 'acmw');\r
attr = NULL;\r
}\r
\r
\r
status = STATUS_SUCCESS;\r
out:\r
- ExFreePool(attr);\r
+ ExFreePoolWithTag(attr, 'acmw');\r
return status;\r
}\r
\r
\r
pdev->IbInterface.wdm.InterfaceDereference(pdev->IbInterface.wdm.Context);\r
if (pdev->pPortArray != NULL) {\r
- ExFreePool(pdev->pPortArray);\r
+ ExFreePoolWithTag(pdev->pPortArray, 'pimw');\r
}\r
\r
if (destroy) {\r
{\r
WmRegRemoveHandler(pRegistatration);\r
WmProviderPut(pRegistatration->pProvider);\r
- ExFreePool(pRegistatration);\r
+ ExFreePoolWithTag(pRegistatration, 'grmw');\r
}\r
\r
void WmRegRemoveHandler(WM_REGISTRATION *pRegistration)\r
err2:\r
WdfObjectDelete(cq->Queue);\r
err1:\r
- ExFreePool(cq);\r
+ ExFreePoolWithTag(cq, 'qcvw');\r
return status;\r
}\r
\r
WdfObjectDelete(pCq->Queue);\r
WdfObjectDelete(pCq->ErrorQueue);\r
WvDevicePut(pCq->pDevice);\r
- ExFreePool(pCq);\r
+ ExFreePoolWithTag(pCq, 'qcvw');\r
}\r
\r
void WvCqResize(WV_PROVIDER *pProvider, WDFREQUEST Request)\r
ib_status = pDevice->pVerbs->query_ca(pDevice->pDevice->hDevice, attr,\r
&size, NULL);\r
if (ib_status != IB_SUCCESS) {\r
- ExFreePool(attr);\r
+ ExFreePoolWithTag(attr, 'acvw');\r
attr = NULL;\r
}\r
\r
}\r
\r
pDevice->PortCount = attr->num_ports;\r
- ExFreePool(attr);\r
+ ExFreePoolWithTag(attr, 'acvw');\r
\r
pDevice->pPorts = ExAllocatePoolWithTag(NonPagedPool, sizeof(WV_PORT) *\r
pDevice->PortCount, 'cpvw');\r
WdfIoQueuePurgeSynchronously(pDevice->pPorts[i].Queue);\r
WdfObjectDelete(pDevice->pPorts[i].Queue);\r
}\r
+ if (pDevice->pPorts != NULL) {\r
+ ExFreePoolWithTag(pDevice->pPorts, 'cpvw');\r
+ }\r
}\r
\r
void WvDeviceFree(WV_DEVICE *pDevice)\r
\r
WvDeviceFreePorts(pDevice);\r
WvProviderPut(pDevice->pProvider);\r
- ExFreePool(pDevice);\r
+ ExFreePoolWithTag(pDevice, 'cdvw');\r
}\r
\r
void WvDeviceRemoveHandler(WV_DEVICE *pDevice)\r
\r
WvConvertDevAttr(attr, ca_attr);\r
outlen = sizeof(WV_IO_DEVICE_ATTRIBUTES);\r
- ExFreePool(ca_attr);\r
+ ExFreePoolWithTag(ca_attr, 'acvw');\r
\r
complete:\r
WdfRequestCompleteWithInformation(Request, status, outlen);\r
outlen = sizeof(WV_IO_PORT_ATTRIBUTES);\r
\r
free:\r
- ExFreePool(ca_attr);\r
+ ExFreePoolWithTag(ca_attr, 'acvw');\r
complete:\r
WdfRequestCompleteWithInformation(Request, status, outlen);\r
}\r
}\r
\r
free:\r
- ExFreePool(ca_attr);\r
+ ExFreePoolWithTag(ca_attr, 'acvw');\r
complete:\r
WdfRequestCompleteWithInformation(Request, status, outlen);\r
}\r
}\r
\r
free:\r
- ExFreePool(ca_attr);\r
+ ExFreePoolWithTag(ca_attr, 'acvw');\r
complete:\r
WdfRequestCompleteWithInformation(Request, status, outlen);\r
}\r
ib_api_status_t ib_status;\r
WV_PROTECTION_DOMAIN *pd;\r
\r
- pd = ExAllocatePoolWithTag(PagedPool, sizeof(WV_PROTECTION_DOMAIN), 'dpvw');\r
+ pd = ExAllocatePoolWithTag(NonPagedPool, sizeof(WV_PROTECTION_DOMAIN), 'dpvw');\r
if (pd == NULL) {\r
return STATUS_NO_MEMORY;\r
}\r
return STATUS_SUCCESS;\r
\r
err:\r
- ExFreePool(pd);\r
+ ExFreePoolWithTag(pd, 'dpvw');\r
return STATUS_UNSUCCESSFUL;\r
}\r
\r
}\r
\r
cl_qmap_remove_item(&pPd->MrMap, &mr->Item);\r
- ExFreePool(mr);\r
+ ExFreePoolWithTag(mr, 'rmvw');\r
}\r
\r
if (pPd->hVerbsPd != NULL) {\r
}\r
\r
WvDevicePut(pPd->pDevice);\r
- ExFreePool(pPd);\r
+ ExFreePoolWithTag(pPd, 'dpvw');\r
}\r
\r
void WvPdRemoveHandler(WV_PROTECTION_DOMAIN *pPd)\r
return;\r
\r
err3:\r
- ExFreePool(mr);\r
+ ExFreePoolWithTag(mr, 'rmvw');\r
err2:\r
WvPdRelease(pd);\r
err1:\r
goto release;\r
}\r
\r
- ExFreePool(mr);\r
+ ExFreePoolWithTag(mr, 'rmvw');\r
release:\r
WvPdRelease(pd);\r
complete:\r
}\r
\r
WvPdPut(pMw->pPd);\r
- ExFreePool(pMw);\r
+ ExFreePoolWithTag(pMw, 'wmvw');\r
}\r
\r
static void WvVerbsConvertAv(ib_av_attr_t *pVerbsAv, WV_IO_AV *pAv)\r
}\r
\r
WvPdPut(pAh->pPd);\r
- ExFreePool(pAh);\r
+ ExFreePoolWithTag(pAh, 'havw');\r
}\r
}\r
}\r
while ((ep = IndexListRemoveHead(&pProvider->EpIndex)) != NULL) {\r
- RemoveEntryList(&ep->Entry);\r
WvEpFree(ep);\r
}\r
while ((ah = IndexListRemoveHead(&pProvider->AhIndex)) != NULL) {\r
err2:\r
WdfObjectDelete(srq->Queue);\r
err1:\r
- ExFreePool(srq);\r
+ ExFreePoolWithTag(srq, 'rsvw');\r
return STATUS_UNSUCCESSFUL;\r
}\r
\r
WdfIoQueuePurgeSynchronously(pSrq->Queue);\r
WdfObjectDelete(pSrq->Queue);\r
WvPdPut(pSrq->pPd);\r
- ExFreePool(pSrq);\r
+ ExFreePoolWithTag(pSrq, 'rsvw');\r
}\r
\r
void WvSrqModify(WV_PROVIDER *pProvider, WDFREQUEST Request)\r
while (--i > 0) {\r
IoFreeWorkItem(pWorkQueue->TaskArray[i].pWorkItem);\r
}\r
- ExFreePool(pWorkQueue->TaskArray);\r
+ ExFreePoolWithTag(pWorkQueue->TaskArray, 'ktqw');\r
return STATUS_INSUFFICIENT_RESOURCES;\r
}\r
\r
return DAT_SUCCESS;\r
\r
/* no graceful half-pipe disconnect option */\r
- ret = rdma_disconnect(conn->cm_id);\r
- if (ret)\r
- dapl_dbg_log(DAPL_DBG_TYPE_ERR,\r
- " disconnect: ID %p ret 0x%x\n",\r
- ep_ptr->cm_handle, ret);\r
+ rdma_disconnect(conn->cm_id);\r
\r
/* \r
* DAT event notification occurs from the callback\r
BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)\r
{\r
UNREFERENCED_PARAMETER(hInstance);\r
- UNREFERENCED_PARAMETER(dwReason);\r
UNREFERENCED_PARAMETER(lpReserved);\r
\r
- InitializeCriticalSection(&lock);\r
+ switch (dwReason) {\r
+ case DLL_PROCESS_ATTACH:\r
+ InitializeCriticalSection(&lock);\r
+ break;\r
+ case DLL_PROCESS_DETACH:\r
+ DeleteCriticalSection(&lock);\r
+ break;\r
+ default:\r
+ break;\r
+ }\r
+\r
return TRUE;\r
}\r
BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)\r
{\r
UNREFERENCED_PARAMETER(hInstance);\r
- UNREFERENCED_PARAMETER(dwReason);\r
UNREFERENCED_PARAMETER(lpReserved);\r
\r
- InitializeCriticalSection(&lock);\r
+ switch (dwReason) {\r
+ case DLL_PROCESS_ATTACH:\r
+ InitializeCriticalSection(&lock);\r
+ break;\r
+ case DLL_PROCESS_DETACH:\r
+ DeleteCriticalSection(&lock);\r
+ break;\r
+ default:\r
+ break;\r
+ }\r
\r
return TRUE;\r
}\r