From 98ffc124f55bd0e4a09289f1d5690d407c3ec926 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Mon, 7 Nov 2016 15:51:56 +0000 Subject: [PATCH] [NTOS:IO]: IopCreateDriver(): Set the returned DriverObject value only in case of success. svn path=/trunk/; revision=73170 --- reactos/ntoskrnl/io/iomgr/driver.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/reactos/ntoskrnl/io/iomgr/driver.c b/reactos/ntoskrnl/io/iomgr/driver.c index 22f5a4078ea..413458d71f1 100644 --- a/reactos/ntoskrnl/io/iomgr/driver.c +++ b/reactos/ntoskrnl/io/iomgr/driver.c @@ -527,13 +527,14 @@ IopInitializeDriverModule( RtlFreeUnicodeString(&RegistryKey); RtlFreeUnicodeString(&DriverName); - *DriverObject = Driver; if (!NT_SUCCESS(Status)) { DPRINT("IopCreateDriver() failed (Status 0x%08lx)\n", Status); return Status; } + *DriverObject = Driver; + MmFreeDriverInitialization((PLDR_DATA_TABLE_ENTRY)Driver->DriverSection); /* Set the driver as initialized */ @@ -1426,7 +1427,7 @@ IopReinitializeDrivers(VOID) &DriverReinitListLock); while (Entry) { - /* Get the item*/ + /* Get the item */ ReinitItem = CONTAINING_RECORD(Entry, DRIVER_REINIT_ITEM, ItemEntry); /* Increment reinitialization counter */ @@ -1462,7 +1463,7 @@ IopReinitializeBootDrivers(VOID) &DriverBootReinitListLock); while (Entry) { - /* Get the item*/ + /* Get the item */ ReinitItem = CONTAINING_RECORD(Entry, DRIVER_REINIT_ITEM, ItemEntry); /* Increment reinitialization counter */ @@ -1510,7 +1511,7 @@ try_again: /* First, create a unique name for the driver if we don't have one */ if (!DriverName) { - /* Create a random name and set up the string*/ + /* Create a random name and set up the string */ NameLength = (USHORT)swprintf(NameBuffer, DRIVER_ROOT_NAME L"%08u", KeTickCount.LowPart);