From e2662e4df0465639ba968543db40a190eefbffeb Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Thu, 18 Jun 2009 02:24:19 +0000 Subject: [PATCH] - Make NdisGeneratePartialCancelId safe by using Interlocked functions svn path=/trunk/; revision=41443 --- reactos/drivers/network/ndis/ndis/main.c | 4 ++++ reactos/drivers/network/ndis/ndis/misc.c | 10 ++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/reactos/drivers/network/ndis/ndis/main.c b/reactos/drivers/network/ndis/ndis/main.c index a226c69ffe2..04eb8c00f67 100644 --- a/reactos/drivers/network/ndis/ndis/main.c +++ b/reactos/drivers/network/ndis/ndis/main.c @@ -21,6 +21,8 @@ ULONG DebugTraceLevel = MIN_TRACE; #endif /* DBG */ +UCHAR CancelId; + VOID NTAPI MainUnload( PDRIVER_OBJECT DriverObject) @@ -61,6 +63,8 @@ DriverEntry( DriverObject->DriverUnload = MainUnload; + CancelId = 0; + return STATUS_SUCCESS; } diff --git a/reactos/drivers/network/ndis/ndis/misc.c b/reactos/drivers/network/ndis/ndis/misc.c index c23707b94ad..be4cfdabd4a 100644 --- a/reactos/drivers/network/ndis/ndis/misc.c +++ b/reactos/drivers/network/ndis/ndis/misc.c @@ -6,6 +6,8 @@ #include "ndissys.h" +extern UCHAR CancelId; + /* * @implemented */ @@ -518,13 +520,13 @@ UCHAR EXPORT NdisGeneratePartialCancelId(VOID) { - static UCHAR CancelId = 0; + UCHAR PartialCancelId; - CancelId++; + PartialCancelId = InterlockedIncrement((PLONG)&CancelId); - NDIS_DbgPrint(MAX_TRACE, ("Cancel ID %u\n", CancelId)); + NDIS_DbgPrint(MAX_TRACE, ("Cancel ID %u\n", PartialCancelId)); - return CancelId; + return PartialCancelId; } /* EOF */