Jacek Caban : ntoskrnl.exe: Use kernel object allocators for device object.
Module: wine Branch: master Commit: d01cd45b55029d8170ca8bb9dd8f85efca7da11c URL: https://source.winehq.org/git/wine.git/?a=commit;h=d01cd45b55029d8170ca8bb9d... Author: Jacek Caban <jacek(a)codeweavers.com> Date: Tue Feb 26 13:39:21 2019 +0100 ntoskrnl.exe: Use kernel object allocators for device object. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/ntoskrnl.exe/ntoskrnl.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c index 2ae57c8..e10f511 100644 --- a/dlls/ntoskrnl.exe/ntoskrnl.c +++ b/dlls/ntoskrnl.exe/ntoskrnl.c @@ -1218,7 +1218,8 @@ static const WCHAR device_type_name[] = {'D','e','v','i','c','e',0}; static struct _OBJECT_TYPE device_type = { - device_type_name + device_type_name, + free_kernel_object }; POBJECT_TYPE IoDeviceObjectType = &device_type; @@ -1240,7 +1241,7 @@ NTSTATUS WINAPI IoCreateDevice( DRIVER_OBJECT *driver, ULONG ext_size, TRACE( "(%p, %u, %s, %u, %x, %u, %p)\n", driver, ext_size, debugstr_us(name), type, characteristics, exclusive, ret_device ); - if (!(device = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*device) + ext_size ))) + if (!(device = alloc_kernel_object( IoDeviceObjectType, sizeof(DEVICE_OBJECT) + ext_size, 1 ))) return STATUS_NO_MEMORY; SERVER_START_REQ( create_device ) @@ -1268,7 +1269,7 @@ NTSTATUS WINAPI IoCreateDevice( DRIVER_OBJECT *driver, ULONG ext_size, *ret_device = device; } - else HeapFree( GetProcessHeap(), 0, device ); + else free_kernel_object( device ); return status; } @@ -1296,7 +1297,7 @@ void WINAPI IoDeleteDevice( DEVICE_OBJECT *device ) while (*prev && *prev != device) prev = &(*prev)->NextDevice; if (*prev) *prev = (*prev)->NextDevice; NtClose( device->Reserved ); - HeapFree( GetProcessHeap(), 0, device ); + dereference_kernel_object( device ); } }
participants (1)
-
Alexandre Julliard