[SACDRV] Fix uninitialized variable usage.

Powered by clang-cl.
This commit is contained in:
Thomas Faber 2021-10-09 15:59:58 -04:00
parent 4eb45209ea
commit 4be3bc682d
No known key found for this signature in database
GPG key ID: 076E7C3D44720826
2 changed files with 23 additions and 19 deletions

View file

@ -153,27 +153,29 @@ FreeDeviceData(IN PDEVICE_OBJECT DeviceObject)
/* Get the device extension and see how far we had gotten */
DeviceExtension = (PSAC_DEVICE_EXTENSION)DeviceObject->DeviceExtension;
if ((GlobalDataInitialized) && (DeviceExtension->Initialized))
if (!(GlobalDataInitialized) || !(DeviceExtension->Initialized))
{
/* Attempt to rundown while holding the lock */
goto Exit;
}
/* Attempt to rundown while holding the lock */
KeAcquireSpinLock(&DeviceExtension->Lock, &OldIrql);
while (DeviceExtension->RundownInProgress)
{
SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC FreeDeviceData: Waiting....\n");
/* Initiate and wait for rundown */
KeInitializeEvent(&DeviceExtension->RundownEvent, SynchronizationEvent, 0);
KeReleaseSpinLock(&DeviceExtension->Lock, OldIrql);
Status = KeWaitForSingleObject(&DeviceExtension->RundownEvent,
Executive,
KernelMode,
FALSE,
NULL);
ASSERT(Status == STATUS_SUCCESS);
/* Re-acquire the lock and check if rundown is done */
KeAcquireSpinLock(&DeviceExtension->Lock, &OldIrql);
while (DeviceExtension->RundownInProgress)
{
SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC FreeDeviceData: Waiting....\n");
/* Initiate and wait for rundown */
KeInitializeEvent(&DeviceExtension->RundownEvent, SynchronizationEvent, 0);
KeReleaseSpinLock(&DeviceExtension->Lock, OldIrql);
Status = KeWaitForSingleObject(&DeviceExtension->RundownEvent,
Executive,
KernelMode,
FALSE,
NULL);
ASSERT(Status == STATUS_SUCCESS);
/* Re-acquire the lock and check if rundown is done */
KeAcquireSpinLock(&DeviceExtension->Lock, &OldIrql);
}
}
/* Now set the rundown flag while we cancel the timer */
@ -205,6 +207,7 @@ FreeDeviceData(IN PDEVICE_OBJECT DeviceObject)
KeAcquireSpinLock(&DeviceExtension->Lock, &OldIrql);
DeviceExtension->Initialized = FALSE;
KeReleaseSpinLock(&DeviceExtension->Lock, OldIrql);
Exit:
SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC FreeDeviceData: Exiting.\n");
}

View file

@ -74,6 +74,7 @@
{ \
if (!VerifyEventWaitable(Attributes->x, &Object, &WaitObject)) \
{ \
Status = STATUS_INVALID_HANDLE; \
goto FailChannel; \
} \
Channel->x = Attributes->x; \