- Perform all allocations / frees in dedicated alloc / free function

svn path=/trunk/; revision=47714
This commit is contained in:
Johannes Anderwald 2010-06-09 14:44:46 +00:00
parent db5472b519
commit 1bb04a5142
8 changed files with 49 additions and 50 deletions

View file

@ -530,7 +530,7 @@ KsAllocateDeviceHeader(
return STATUS_INVALID_PARAMETER; return STATUS_INVALID_PARAMETER;
/* allocate a device header */ /* allocate a device header */
Header = ExAllocatePoolWithTag(PagedPool, sizeof(KSIDEVICE_HEADER), TAG_DEVICE_HEADER); Header = AllocateItem(PagedPool, sizeof(KSIDEVICE_HEADER));
/* check for success */ /* check for success */
if (!Header) if (!Header)
@ -597,7 +597,7 @@ KsFreeDeviceHeader(
return; return;
KspFreeCreateItems(&Header->ItemList); KspFreeCreateItems(&Header->ItemList);
ExFreePoolWithTag(Header, TAG_DEVICE_HEADER); FreeItem(Header);
} }
/* /*
@ -641,7 +641,7 @@ KsAllocateObjectHeader(
/* check for an file object */ /* check for an file object */
/* allocate the object header */ /* allocate the object header */
ObjectHeader = ExAllocatePoolWithTag(NonPagedPool, sizeof(KSIOBJECT_HEADER), TAG_DEVICE_HEADER); ObjectHeader = AllocateItem(NonPagedPool, sizeof(KSIOBJECT_HEADER));
if (!ObjectHeader) if (!ObjectHeader)
return STATUS_INSUFFICIENT_RESOURCES; return STATUS_INSUFFICIENT_RESOURCES;
@ -659,10 +659,10 @@ KsAllocateObjectHeader(
{ {
/* copy object class */ /* copy object class */
ObjectHeader->ObjectClass.MaximumLength = IoStack->FileObject->FileName.MaximumLength; ObjectHeader->ObjectClass.MaximumLength = IoStack->FileObject->FileName.MaximumLength;
ObjectHeader->ObjectClass.Buffer = ExAllocatePoolWithTag(NonPagedPool, ObjectHeader->ObjectClass.MaximumLength, TAG_DEVICE_HEADER); ObjectHeader->ObjectClass.Buffer = AllocateItem(NonPagedPool, ObjectHeader->ObjectClass.MaximumLength);
if (!ObjectHeader->ObjectClass.Buffer) if (!ObjectHeader->ObjectClass.Buffer)
{ {
ExFreePoolWithTag(ObjectHeader, TAG_DEVICE_HEADER); FreeItem(ObjectHeader);
return STATUS_INSUFFICIENT_RESOURCES; return STATUS_INSUFFICIENT_RESOURCES;
} }
RtlCopyUnicodeString(&ObjectHeader->ObjectClass, &IoStack->FileObject->FileName); RtlCopyUnicodeString(&ObjectHeader->ObjectClass, &IoStack->FileObject->FileName);
@ -726,7 +726,7 @@ KsFreeObjectHeader(
if (ObjectHeader->ObjectClass.Buffer) if (ObjectHeader->ObjectClass.Buffer)
{ {
/* release object class buffer */ /* release object class buffer */
ExFreePoolWithTag(ObjectHeader->ObjectClass.Buffer, TAG_DEVICE_HEADER); FreeItem(ObjectHeader->ObjectClass.Buffer);
} }
if (ObjectHeader->Unknown) if (ObjectHeader->Unknown)
@ -739,7 +739,7 @@ KsFreeObjectHeader(
KspFreeCreateItems(&ObjectHeader->ItemList); KspFreeCreateItems(&ObjectHeader->ItemList);
/* free object header */ /* free object header */
ExFreePoolWithTag(ObjectHeader, TAG_DEVICE_HEADER); FreeItem(ObjectHeader);
} }
@ -914,11 +914,11 @@ KsAllocateObjectCreateItem(
if (AllocateEntry) if (AllocateEntry)
{ {
/* allocate create item */ /* allocate create item */
Item = ExAllocatePool(NonPagedPool, sizeof(KSOBJECT_CREATE_ITEM)); Item = AllocateItem(NonPagedPool, sizeof(KSOBJECT_CREATE_ITEM));
if (!Item) if (!Item)
{ {
/* no memory */ /* no memory */
ExFreePool(CreateEntry); FreeItem(CreateEntry);
return STATUS_INSUFFICIENT_RESOURCES; return STATUS_INSUFFICIENT_RESOURCES;
} }
@ -931,7 +931,7 @@ KsAllocateObjectCreateItem(
Item->ObjectClass.MaximumLength = CreateItem->ObjectClass.MaximumLength; Item->ObjectClass.MaximumLength = CreateItem->ObjectClass.MaximumLength;
/* copy object class */ /* copy object class */
Item->ObjectClass.Buffer = ExAllocatePool(NonPagedPool, Item->ObjectClass.MaximumLength); Item->ObjectClass.Buffer = AllocateItem(NonPagedPool, Item->ObjectClass.MaximumLength);
if (!Item->ObjectClass.Buffer) if (!Item->ObjectClass.Buffer)
{ {
/* release resources */ /* release resources */
@ -1747,7 +1747,7 @@ KsCreateBusEnumObject(
Length = wcslen(BusIdentifier) * sizeof(WCHAR); Length = wcslen(BusIdentifier) * sizeof(WCHAR);
Length += sizeof(BUS_ENUM_DEVICE_EXTENSION); Length += sizeof(BUS_ENUM_DEVICE_EXTENSION);
BusDeviceExtension = ExAllocatePool(NonPagedPool, Length); BusDeviceExtension = AllocateItem(NonPagedPool, Length);
if (!BusDeviceExtension) if (!BusDeviceExtension)
{ {
/* not enough memory */ /* not enough memory */
@ -1772,12 +1772,12 @@ KsCreateBusEnumObject(
BusDeviceExtension->ServicePath.Length = 0; BusDeviceExtension->ServicePath.Length = 0;
BusDeviceExtension->ServicePath.MaximumLength = Length; BusDeviceExtension->ServicePath.MaximumLength = Length;
BusDeviceExtension->ServicePath.Buffer = ExAllocatePool(NonPagedPool, Length); BusDeviceExtension->ServicePath.Buffer = AllocateItem(NonPagedPool, Length);
if (!BusDeviceExtension->ServicePath.Buffer) if (!BusDeviceExtension->ServicePath.Buffer)
{ {
/* not enough memory */ /* not enough memory */
ExFreePool(BusDeviceExtension); FreeItem(BusDeviceExtension);
return STATUS_INSUFFICIENT_RESOURCES; return STATUS_INSUFFICIENT_RESOURCES;
} }
@ -1798,8 +1798,8 @@ KsCreateBusEnumObject(
/* check for success */ /* check for success */
if (!NT_SUCCESS(Status)) if (!NT_SUCCESS(Status))
{ {
ExFreePool(BusDeviceExtension->ServicePath.Buffer); FreeItem(BusDeviceExtension->ServicePath.Buffer);
ExFreePool(BusDeviceExtension); FreeItem(BusDeviceExtension);
return Status; return Status;
} }
@ -1808,8 +1808,8 @@ KsCreateBusEnumObject(
if (!NT_SUCCESS(Status)) if (!NT_SUCCESS(Status))
{ {
ExFreePool(BusDeviceExtension->ServicePath.Buffer); FreeItem(BusDeviceExtension->ServicePath.Buffer);
ExFreePool(BusDeviceExtension); FreeItem(BusDeviceExtension);
return Status; return Status;
} }
@ -1836,8 +1836,8 @@ KsCreateBusEnumObject(
} }
/* free device extension */ /* free device extension */
ExFreePool(BusDeviceExtension->ServicePath.Buffer); FreeItem(BusDeviceExtension->ServicePath.Buffer);
ExFreePool(BusDeviceExtension); FreeItem(BusDeviceExtension);
return STATUS_DEVICE_REMOVED; return STATUS_DEVICE_REMOVED;
} }
@ -2795,7 +2795,7 @@ KsRegisterFilterWithNoKSPins(
} }
/* free the symbolic link list */ /* free the symbolic link list */
ExFreePool(SymbolicLinkList); FreeItem(SymbolicLinkList);
} }
return Status; return Status;

View file

@ -239,7 +239,7 @@ KspReadMediaCategory(
/* allocate buffer for the registry key */ /* allocate buffer for the registry key */
Path.Length = 0; Path.Length = 0;
Path.MaximumLength = MediaPath.MaximumLength + GuidString.MaximumLength; Path.MaximumLength = MediaPath.MaximumLength + GuidString.MaximumLength;
Path.Buffer = ExAllocatePool(NonPagedPool, Path.MaximumLength); Path.Buffer = AllocateItem(NonPagedPool, Path.MaximumLength);
if (!Path.Buffer) if (!Path.Buffer)
{ {
/* not enough memory */ /* not enough memory */
@ -262,7 +262,7 @@ KspReadMediaCategory(
DPRINT("ZwOpenKey() status 0x%08lx %S\n", Status, Path.Buffer); DPRINT("ZwOpenKey() status 0x%08lx %S\n", Status, Path.Buffer);
/* free path buffer */ /* free path buffer */
ExFreePool(Path.Buffer); FreeItem(Path.Buffer);
/* check for success */ /* check for success */
if (!NT_SUCCESS(Status)) if (!NT_SUCCESS(Status))
@ -281,7 +281,7 @@ KspReadMediaCategory(
} }
/* allocate buffer to read key info */ /* allocate buffer to read key info */
KeyInfo = (PKEY_VALUE_PARTIAL_INFORMATION) ExAllocatePool(NonPagedPool, Size); KeyInfo = (PKEY_VALUE_PARTIAL_INFORMATION) AllocateItem(NonPagedPool, Size);
if (!KeyInfo) if (!KeyInfo)
{ {
/* not enough memory */ /* not enough memory */
@ -298,7 +298,7 @@ KspReadMediaCategory(
if (!NT_SUCCESS(Status)) if (!NT_SUCCESS(Status))
{ {
/* failed to read key */ /* failed to read key */
ExFreePool(KeyInfo); FreeItem(KeyInfo);
return Status; return Status;
} }
@ -545,13 +545,13 @@ KspPinPropertyHandler(
if (KeyInfo->DataLength + sizeof(WCHAR) > IoStack->Parameters.DeviceIoControl.OutputBufferLength) if (KeyInfo->DataLength + sizeof(WCHAR) > IoStack->Parameters.DeviceIoControl.OutputBufferLength)
{ {
Status = STATUS_BUFFER_OVERFLOW; Status = STATUS_BUFFER_OVERFLOW;
ExFreePool(KeyInfo); FreeItem(KeyInfo);
break; break;
} }
RtlMoveMemory(Irp->UserBuffer, &KeyInfo->Data, KeyInfo->DataLength); RtlMoveMemory(Irp->UserBuffer, &KeyInfo->Data, KeyInfo->DataLength);
((LPWSTR)Irp->UserBuffer)[KeyInfo->DataLength / sizeof(WCHAR)] = L'\0'; ((LPWSTR)Irp->UserBuffer)[KeyInfo->DataLength / sizeof(WCHAR)] = L'\0';
ExFreePool(KeyInfo); FreeItem(KeyInfo);
break; break;
case KSPROPERTY_PIN_PROPOSEDATAFORMAT: case KSPROPERTY_PIN_PROPOSEDATAFORMAT:
Size = sizeof(KSDATAFORMAT); Size = sizeof(KSDATAFORMAT);

View file

@ -292,7 +292,7 @@ KspEnableEvent(
else else
{ {
/* allocate it from nonpaged pool */ /* allocate it from nonpaged pool */
EventEntry = ExAllocatePool(NonPagedPool, Size); EventEntry = AllocateItem(NonPagedPool, Size);
} }
if (!EventEntry) if (!EventEntry)
@ -529,7 +529,7 @@ KsDiscardEvent(
} }
/* free event entry */ /* free event entry */
ExFreePool(EventEntry); FreeItem(EventEntry);
} }

View file

@ -45,7 +45,7 @@ KsLoadResource(
if (NT_SUCCESS(Status)) if (NT_SUCCESS(Status))
{ {
/* allocate resource buffer */ /* allocate resource buffer */
Result = ExAllocatePool(PoolType, Size); Result = AllocateItem(PoolType, Size);
if (Result) if (Result)
{ {
/* copy resource */ /* copy resource */
@ -75,7 +75,7 @@ KsLoadResource(
if (Result) if (Result)
{ {
/* free resource buffer in case of a failure */ /* free resource buffer in case of a failure */
ExFreePool(Result); FreeItem(Result);
} }
} }
/* done */ /* done */
@ -127,7 +127,7 @@ KsGetImageNameAndResourceId(
/* allocate image name buffer */ /* allocate image name buffer */
ImageName->MaximumLength = sizeof(ImagePath) + ImageLength; ImageName->MaximumLength = sizeof(ImagePath) + ImageLength;
ImageName->Buffer = ExAllocatePool(PagedPool, ImageName->MaximumLength); ImageName->Buffer = AllocateItem(PagedPool, ImageName->MaximumLength);
/* check for success */ /* check for success */
if (!ImageName->Buffer) if (!ImageName->Buffer)
@ -145,7 +145,7 @@ KsGetImageNameAndResourceId(
if (!NT_SUCCESS(Status)) if (!NT_SUCCESS(Status))
{ {
/* unexpected error */ /* unexpected error */
ExFreePool(ImageName->Buffer); FreeItem(ImageName->Buffer);
return Status; return Status;
} }
@ -154,13 +154,13 @@ KsGetImageNameAndResourceId(
Status = KspQueryRegValue(RegKey, L"ResourceId", NULL, &ImageLength, ValueType); Status = KspQueryRegValue(RegKey, L"ResourceId", NULL, &ImageLength, ValueType);
/* allocate resource id buffer*/ /* allocate resource id buffer*/
*ResourceId = (ULONG_PTR)ExAllocatePool(PagedPool, ImageLength); *ResourceId = (ULONG_PTR)AllocateItem(PagedPool, ImageLength);
/* check for success */ /* check for success */
if (!*ResourceId) if (!*ResourceId)
{ {
/* insufficient memory */ /* insufficient memory */
ExFreePool(ImageName->Buffer); FreeItem(ImageName->Buffer);
return STATUS_INSUFFICIENT_RESOURCES; return STATUS_INSUFFICIENT_RESOURCES;
} }
/* now query for resource id */ /* now query for resource id */
@ -169,8 +169,8 @@ KsGetImageNameAndResourceId(
if (!NT_SUCCESS(Status)) if (!NT_SUCCESS(Status))
{ {
/* unexpected error */ /* unexpected error */
ExFreePool(ImageName->Buffer); FreeItem(ImageName->Buffer);
ExFreePool((PVOID)*ResourceId); FreeItem((PVOID)*ResourceId);
} }
/* return result */ /* return result */
@ -209,7 +209,7 @@ KsMapModuleName(
/* initialize subkey buffer */ /* initialize subkey buffer */
SubKeyName.Length = 0; SubKeyName.Length = 0;
SubKeyName.MaximumLength = Modules.MaximumLength + ModuleName->MaximumLength; SubKeyName.MaximumLength = Modules.MaximumLength + ModuleName->MaximumLength;
SubKeyName.Buffer = ExAllocatePool(PagedPool, SubKeyName.MaximumLength); SubKeyName.Buffer = AllocateItem(PagedPool, SubKeyName.MaximumLength);
/* check for success */ /* check for success */
if (!SubKeyName.Buffer) if (!SubKeyName.Buffer)
@ -240,7 +240,7 @@ KsMapModuleName(
} }
/* free subkey string */ /* free subkey string */
ExFreePool(SubKeyName.Buffer); FreeItem(SubKeyName.Buffer);
/* close device key */ /* close device key */
ZwClose(hKey); ZwClose(hKey);

View file

@ -101,7 +101,7 @@ KsDispatchSetSecurity(
if (NT_SUCCESS(Status)) if (NT_SUCCESS(Status))
{ {
/* free old descriptor */ /* free old descriptor */
ExFreePool(Descriptor); FreeItem(Descriptor);
/* mark create item as changed */ /* mark create item as changed */
CreateItem->Flags |= KSCREATE_ITEM_SECURITYCHANGED; CreateItem->Flags |= KSCREATE_ITEM_SECURITYCHANGED;
@ -896,7 +896,7 @@ ProbeMdl:
if (Length && ( (!HeaderSize) || (Length % HeaderSize == 0) || ((ProbeFlags & KSPROBE_ALLOWFORMATCHANGE) && (Length == sizeof(KSSTREAM_HEADER))) ) ) if (Length && ( (!HeaderSize) || (Length % HeaderSize == 0) || ((ProbeFlags & KSPROBE_ALLOWFORMATCHANGE) && (Length == sizeof(KSSTREAM_HEADER))) ) )
{ {
/* allocate stream header buffer */ /* allocate stream header buffer */
Irp->AssociatedIrp.SystemBuffer = ExAllocatePool(NonPagedPool, Length); Irp->AssociatedIrp.SystemBuffer = AllocateItem(NonPagedPool, Length);
if (!Irp->AssociatedIrp.SystemBuffer) if (!Irp->AssociatedIrp.SystemBuffer)
{ {

View file

@ -26,7 +26,6 @@ VOID
FreeItem( FreeItem(
IN PVOID Item) IN PVOID Item)
{ {
ExFreePool(Item); ExFreePool(Item);
} }

View file

@ -1560,7 +1560,7 @@ KsStreamPointerClone(
Size = sizeof(KSISTREAM_POINTER) + ContextSize; Size = sizeof(KSISTREAM_POINTER) + ContextSize;
/* allocate new stream pointer */ /* allocate new stream pointer */
NewFrame = (PKSISTREAM_POINTER)ExAllocatePool(NonPagedPool, Size); NewFrame = (PKSISTREAM_POINTER)AllocateItem(NonPagedPool, Size);
if (!NewFrame) if (!NewFrame)
return STATUS_INSUFFICIENT_RESOURCES; return STATUS_INSUFFICIENT_RESOURCES;

View file

@ -30,7 +30,7 @@ KspCreateObjectType(
Name.MaximumLength = wcslen(ObjectType) * sizeof(WCHAR) + CreateParametersSize + 2 * sizeof(WCHAR); Name.MaximumLength = wcslen(ObjectType) * sizeof(WCHAR) + CreateParametersSize + 2 * sizeof(WCHAR);
Name.MaximumLength += sizeof(WCHAR); Name.MaximumLength += sizeof(WCHAR);
/* acquire request buffer */ /* acquire request buffer */
Name.Buffer = ExAllocatePool(NonPagedPool, Name.MaximumLength); Name.Buffer = AllocateItem(NonPagedPool, Name.MaximumLength);
/* check for success */ /* check for success */
if (!Name.Buffer) if (!Name.Buffer)
{ {
@ -68,7 +68,7 @@ KspCreateObjectType(
IO_NO_PARAMETER_CHECKING | IO_FORCE_ACCESS_CHECK); IO_NO_PARAMETER_CHECKING | IO_FORCE_ACCESS_CHECK);
/* free request buffer */ /* free request buffer */
ExFreePool(Name.Buffer); FreeItem(Name.Buffer);
return Status; return Status;
} }
@ -200,7 +200,7 @@ KsTopologyPropertyHandler(
KeyName.Length = 0; KeyName.Length = 0;
KeyName.MaximumLength = LocalMachine.Length + GuidString.Length + sizeof(WCHAR); KeyName.MaximumLength = LocalMachine.Length + GuidString.Length + sizeof(WCHAR);
KeyName.Buffer = ExAllocatePool(PagedPool, KeyName.MaximumLength); KeyName.Buffer = AllocateItem(PagedPool, KeyName.MaximumLength);
if (!KeyName.Buffer) if (!KeyName.Buffer)
{ {
Irp->IoStatus.Information = 0; Irp->IoStatus.Information = 0;
@ -217,7 +217,7 @@ KsTopologyPropertyHandler(
InitializeObjectAttributes(&ObjectAttributes, &KeyName, OBJ_CASE_INSENSITIVE, NULL, NULL); InitializeObjectAttributes(&ObjectAttributes, &KeyName, OBJ_CASE_INSENSITIVE, NULL, NULL);
Status = ZwOpenKey(&hKey, GENERIC_READ, &ObjectAttributes); Status = ZwOpenKey(&hKey, GENERIC_READ, &ObjectAttributes);
ExFreePool(KeyName.Buffer); FreeItem(KeyName.Buffer);
if (!NT_SUCCESS(Status)) if (!NT_SUCCESS(Status))
{ {
@ -235,7 +235,7 @@ KsTopologyPropertyHandler(
} }
ASSERT(Size); ASSERT(Size);
KeyInfo = (PKEY_VALUE_PARTIAL_INFORMATION) ExAllocatePool(NonPagedPool, Size); KeyInfo = (PKEY_VALUE_PARTIAL_INFORMATION) AllocateItem(NonPagedPool, Size);
if (!KeyInfo) if (!KeyInfo)
{ {
Status = STATUS_NO_MEMORY; Status = STATUS_NO_MEMORY;
@ -245,7 +245,7 @@ KsTopologyPropertyHandler(
Status = ZwQueryValueKey(hKey, &Name, KeyValuePartialInformation, (PVOID)KeyInfo, Size, &Size); Status = ZwQueryValueKey(hKey, &Name, KeyValuePartialInformation, (PVOID)KeyInfo, Size, &Size);
if (!NT_SUCCESS(Status)) if (!NT_SUCCESS(Status))
{ {
ExFreePool(KeyInfo); FreeItem(KeyInfo);
ZwClose(hKey); ZwClose(hKey);
Irp->IoStatus.Information = 0; Irp->IoStatus.Information = 0;
break; break;
@ -256,14 +256,14 @@ KsTopologyPropertyHandler(
{ {
Irp->IoStatus.Information = KeyInfo->DataLength + sizeof(WCHAR); Irp->IoStatus.Information = KeyInfo->DataLength + sizeof(WCHAR);
Status = STATUS_MORE_ENTRIES; Status = STATUS_MORE_ENTRIES;
ExFreePool(KeyInfo); FreeItem(KeyInfo);
break; break;
} }
RtlMoveMemory(Irp->UserBuffer, &KeyInfo->Data, KeyInfo->DataLength); RtlMoveMemory(Irp->UserBuffer, &KeyInfo->Data, KeyInfo->DataLength);
((LPWSTR)Irp->UserBuffer)[KeyInfo->DataLength / sizeof(WCHAR)] = L'\0'; ((LPWSTR)Irp->UserBuffer)[KeyInfo->DataLength / sizeof(WCHAR)] = L'\0';
Irp->IoStatus.Information = KeyInfo->DataLength + sizeof(WCHAR); Irp->IoStatus.Information = KeyInfo->DataLength + sizeof(WCHAR);
ExFreePool(KeyInfo); FreeItem(KeyInfo);
break; break;
default: default:
Irp->IoStatus.Information = 0; Irp->IoStatus.Information = 0;