mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 01:55:19 +00:00
[SACDRV] Fix uninitialized variable usage.
Powered by clang-cl.
This commit is contained in:
parent
4eb45209ea
commit
4be3bc682d
2 changed files with 23 additions and 19 deletions
|
@ -153,27 +153,29 @@ FreeDeviceData(IN PDEVICE_OBJECT DeviceObject)
|
||||||
|
|
||||||
/* Get the device extension and see how far we had gotten */
|
/* Get the device extension and see how far we had gotten */
|
||||||
DeviceExtension = (PSAC_DEVICE_EXTENSION)DeviceObject->DeviceExtension;
|
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);
|
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 */
|
/* Now set the rundown flag while we cancel the timer */
|
||||||
|
@ -205,6 +207,7 @@ FreeDeviceData(IN PDEVICE_OBJECT DeviceObject)
|
||||||
KeAcquireSpinLock(&DeviceExtension->Lock, &OldIrql);
|
KeAcquireSpinLock(&DeviceExtension->Lock, &OldIrql);
|
||||||
DeviceExtension->Initialized = FALSE;
|
DeviceExtension->Initialized = FALSE;
|
||||||
KeReleaseSpinLock(&DeviceExtension->Lock, OldIrql);
|
KeReleaseSpinLock(&DeviceExtension->Lock, OldIrql);
|
||||||
|
Exit:
|
||||||
SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC FreeDeviceData: Exiting.\n");
|
SAC_DBG(SAC_DBG_ENTRY_EXIT, "SAC FreeDeviceData: Exiting.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -74,6 +74,7 @@
|
||||||
{ \
|
{ \
|
||||||
if (!VerifyEventWaitable(Attributes->x, &Object, &WaitObject)) \
|
if (!VerifyEventWaitable(Attributes->x, &Object, &WaitObject)) \
|
||||||
{ \
|
{ \
|
||||||
|
Status = STATUS_INVALID_HANDLE; \
|
||||||
goto FailChannel; \
|
goto FailChannel; \
|
||||||
} \
|
} \
|
||||||
Channel->x = Attributes->x; \
|
Channel->x = Attributes->x; \
|
||||||
|
|
Loading…
Reference in a new issue