No new timers can be scheduled once rings are disabled but if the rings are
both disconnected and destroyed within the next 100us then it's possible
that the DPC might hit some unitialized data so make sure pending timers
are cancelled.
Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
Ring->Stopped = FALSE;
__ReceiverRingReleaseLock(Ring);
+
+ //
+ // No new timers can be scheduled once Enabled goes to FALSE.
+ // Cancel any existing ones.
+ //
+ (VOID) KeCancelTimer(&Ring->Timer);
}
static FORCEINLINE VOID
Ring->Enabled = FALSE;
__TransmitterRingReleaseLock(Ring);
+
+ //
+ // No new timers can be scheduled once Enabled goes to FALSE.
+ // Cancel any existing ones.
+ //
+ (VOID) KeCancelTimer(&Ring->Timer);
}
static FORCEINLINE VOID