diff options
Diffstat (limited to 'network/trans/WFPSampler/syslib/HelperFunctions_WorkItems.cpp')
| -rw-r--r-- | network/trans/WFPSampler/syslib/HelperFunctions_WorkItems.cpp | 65 |
1 files changed, 50 insertions, 15 deletions
diff --git a/network/trans/WFPSampler/syslib/HelperFunctions_WorkItems.cpp b/network/trans/WFPSampler/syslib/HelperFunctions_WorkItems.cpp index 4c47f3b3..23f4a6df 100644 --- a/network/trans/WFPSampler/syslib/HelperFunctions_WorkItems.cpp +++ b/network/trans/WFPSampler/syslib/HelperFunctions_WorkItems.cpp @@ -843,9 +843,16 @@ NTSTATUS KrnlHlprWorkItemQueue(_In_ PDEVICE_OBJECT pWDMDevice, HLPR_BAIL_LABEL: - if(status != STATUS_SUCCESS && - pWorkItemData) - KrnlHlprWorkItemDataDestroy(&pWorkItemData); + if(status != STATUS_SUCCESS) + { + if(pWorkItemData) + KrnlHlprWorkItemDataDestroy(&pWorkItemData); + else + { + if(pIOWorkItem) + IoFreeWorkItem(pIOWorkItem); + } + } #if DBG @@ -929,9 +936,16 @@ NTSTATUS KrnlHlprWorkItemQueue(_In_ PDEVICE_OBJECT pWDMDevice, HLPR_BAIL_LABEL: - if(status != STATUS_SUCCESS && - pWorkItemData) - KrnlHlprWorkItemDataDestroy(&pWorkItemData); + if(status != STATUS_SUCCESS) + { + if(pWorkItemData) + KrnlHlprWorkItemDataDestroy(&pWorkItemData); + else + { + if(pIOWorkItem) + IoFreeWorkItem(pIOWorkItem); + } + } #if DBG @@ -1015,9 +1029,16 @@ NTSTATUS KrnlHlprWorkItemQueue(_In_ PDEVICE_OBJECT pWDMDevice, HLPR_BAIL_LABEL: - if(status != STATUS_SUCCESS && - pWorkItemData) - KrnlHlprWorkItemDataDestroy(&pWorkItemData); + if(status != STATUS_SUCCESS) + { + if(pWorkItemData) + KrnlHlprWorkItemDataDestroy(&pWorkItemData); + else + { + if(pIOWorkItem) + IoFreeWorkItem(pIOWorkItem); + } + } #if DBG @@ -1098,9 +1119,16 @@ NTSTATUS KrnlHlprWorkItemQueue(_In_ PDEVICE_OBJECT pWDMDevice, HLPR_BAIL_LABEL: - if(status != STATUS_SUCCESS && - pWorkItemData) - KrnlHlprWorkItemDataDestroy(&pWorkItemData); + if(status != STATUS_SUCCESS) + { + if(pWorkItemData) + KrnlHlprWorkItemDataDestroy(&pWorkItemData); + else + { + if(pIOWorkItem) + IoFreeWorkItem(pIOWorkItem); + } + } #if DBG @@ -1181,9 +1209,16 @@ NTSTATUS KrnlHlprWorkItemQueue(_In_ PDEVICE_OBJECT pWDMDevice, HLPR_BAIL_LABEL: - if(status != STATUS_SUCCESS && - pWorkItemData) - KrnlHlprWorkItemDataDestroy(&pWorkItemData); + if(status != STATUS_SUCCESS) + { + if(pWorkItemData) + KrnlHlprWorkItemDataDestroy(&pWorkItemData); + else + { + if(pIOWorkItem) + IoFreeWorkItem(pIOWorkItem); + } + } #if DBG |
