mirror of
https://github.com/veracrypt/VeraCrypt.git
synced 2025-11-12 11:28:26 -06:00
Windows: correctly handle SEH exceptions during self-tests in order to disable CPU extended features in such case.
This commit is contained in:
@@ -66,18 +66,8 @@ NTSTATUS DumpFilterEntry (PFILTER_EXTENSION filterExtension, PFILTER_INITIALIZAT
|
||||
if (filterExtension->DumpType == DumpTypeCrashdump)
|
||||
{
|
||||
dumpConfig.HwEncryptionEnabled = FALSE;
|
||||
// disable also SSE optimizations
|
||||
HasMMX() = 0;
|
||||
HasISSE() = 0;
|
||||
HasSSE2() = 0;
|
||||
HasSSSE3() = 0;
|
||||
HasSSE41() = 0;
|
||||
HasSSE42() = 0;
|
||||
HasAESNI() = 0;
|
||||
HasCLMUL() = 0;
|
||||
HasSAVX() = 0;
|
||||
HasSAVX2() = 0;
|
||||
HasSBMI2() = 0;
|
||||
// disable also CPU extended features used in optimizations
|
||||
DisableCPUExtendedFeatures ();
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
@@ -153,7 +153,16 @@ NTSTATUS DriverEntry (PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath)
|
||||
if (startKeyValue->Type == REG_DWORD && *((uint32 *) startKeyValue->Data) == SERVICE_BOOT_START)
|
||||
{
|
||||
if (!SelfTestsPassed)
|
||||
TC_BUG_CHECK (STATUS_INVALID_PARAMETER);
|
||||
{
|
||||
// in case of system encryption, if self-tests fail, disable all extended CPU
|
||||
// features and try again in order to workaround faulty configurations
|
||||
DisableCPUExtendedFeatures ();
|
||||
SelfTestsPassed = AutoTestAlgorithms();
|
||||
|
||||
// BUG CHECK if the self-tests still fail
|
||||
if (!SelfTestsPassed)
|
||||
TC_BUG_CHECK (STATUS_INVALID_PARAMETER);
|
||||
}
|
||||
|
||||
LoadBootArguments();
|
||||
VolumeClassFilterRegistered = IsVolumeClassFilterRegistered();
|
||||
|
||||
Reference in New Issue
Block a user