NtfsGetVolumeData frees FileRecLookasideList in case of failure, so don't
free it again.
Dereferencing NewDeviceObject invalidates Vcb.
if (!NT_SUCCESS(Status))
goto ByeBye;
- Lookaside = TRUE;
-
NewDeviceObject->Flags |= DO_DIRECT_IO;
Vcb = (PVOID)NewDeviceObject->DeviceExtension;
RtlZeroMemory(Vcb, sizeof(NTFS_VCB));
if (!NT_SUCCESS(Status))
goto ByeBye;
+ Lookaside = TRUE;
+
NewDeviceObject->Vpb = DeviceToMount->Vpb;
Vcb->StorageDevice = DeviceToMount;
if (Ccb)
ExFreePool(Ccb);
- if (NewDeviceObject)
- IoDeleteDevice(NewDeviceObject);
-
if (Lookaside)
ExDeleteNPagedLookasideList(&Vcb->FileRecLookasideList);
+
+ if (NewDeviceObject)
+ IoDeleteDevice(NewDeviceObject);
}
DPRINT("NtfsMountVolume() done (Status: %lx)\n", Status);