diff --git a/sys/init.c b/sys/init.c index 349c44df5..584559e6c 100644 --- a/sys/init.c +++ b/sys/init.c @@ -502,25 +502,19 @@ DokanCreateDiskDevice( dcb->DiskDeviceName = AllocateUnicodeString(diskDeviceNameBuf); dcb->FileSystemDeviceName = AllocateUnicodeString(fsDeviceNameBuf); - if (dcb->SymbolicLinkName == NULL) { - DDbgPrint(" Can't allocate memory for SymbolicLinkName"); - ExDeleteResourceLite(&dcb->Resource); - IoDeleteDevice(diskDeviceObject); - return STATUS_INSUFFICIENT_RESOURCES; - } + if (dcb->SymbolicLinkName == NULL || + dcb->DiskDeviceName == NULL || + dcb->FileSystemDeviceName == NULL) { - if (dcb->DiskDeviceName == NULL) { - DDbgPrint(" Can't allocate memory for DiskDeviceName"); - ExFreePool(dcb->SymbolicLinkName); - ExDeleteResourceLite(&dcb->Resource); - IoDeleteDevice(diskDeviceObject); - return STATUS_INSUFFICIENT_RESOURCES; - } + DDbgPrint(" Failed to allocate memory for device naming"); + + if (dcb->SymbolicLinkName != NULL) + ExFreePool(dcb->SymbolicLinkName); + if (dcb->DiskDeviceName != NULL) + ExFreePool(dcb->DiskDeviceName); + if (dcb->FileSystemDeviceName != NULL) + ExFreePool(dcb->FileSystemDeviceName); - if (dcb->FileSystemDeviceName == NULL) { - DDbgPrint(" Can't allocate memory for FileSystemDeviceName"); - ExFreePool(dcb->SymbolicLinkName); - ExFreePool(dcb->DiskDeviceName); ExDeleteResourceLite(&dcb->Resource); IoDeleteDevice(diskDeviceObject); return STATUS_INSUFFICIENT_RESOURCES;