Cleanup ref-counting overflow asserts
Asserting on 63-bit overflow seems a bit excessive. While 31-bit overflow is more likely to happen, we should introduce a real check if we are concerned about it. Rather than using an ASSERT in Debug configuration run by probably nobody else but me. Signed-off-by: Simon Rozman <simon@rozman.si>
This commit is contained in:
parent
70fcfdc85d
commit
dc7a6fca11
7
wintun.c
7
wintun.c
@ -345,9 +345,7 @@ static NTSTATUS TunWriteIntoIrp(_Inout_ IRP *Irp, _Inout_ UCHAR *buffer, _In_ NE
|
|||||||
_IRQL_requires_same_
|
_IRQL_requires_same_
|
||||||
static void TunNBLRefInit(_Inout_ TUN_CTX *ctx, _Inout_ NET_BUFFER_LIST *nbl)
|
static void TunNBLRefInit(_Inout_ TUN_CTX *ctx, _Inout_ NET_BUFFER_LIST *nbl)
|
||||||
{
|
{
|
||||||
ASSERT(InterlockedGet64(&ctx->ActiveTransactionCount) < MAXLONG64);
|
|
||||||
InterlockedIncrement64(&ctx->ActiveTransactionCount);
|
InterlockedIncrement64(&ctx->ActiveTransactionCount);
|
||||||
ASSERT(InterlockedGet(&ctx->PacketQueue.NumNbl) < MAXLONG);
|
|
||||||
InterlockedIncrement(&ctx->PacketQueue.NumNbl);
|
InterlockedIncrement(&ctx->PacketQueue.NumNbl);
|
||||||
InterlockedExchange64(NET_BUFFER_LIST_REFCOUNT(nbl), 1);
|
InterlockedExchange64(NET_BUFFER_LIST_REFCOUNT(nbl), 1);
|
||||||
}
|
}
|
||||||
@ -356,7 +354,6 @@ _IRQL_requires_same_
|
|||||||
static void TunNBLRefInc(_Inout_ NET_BUFFER_LIST *nbl)
|
static void TunNBLRefInc(_Inout_ NET_BUFFER_LIST *nbl)
|
||||||
{
|
{
|
||||||
ASSERT(InterlockedGet64(NET_BUFFER_LIST_REFCOUNT(nbl)));
|
ASSERT(InterlockedGet64(NET_BUFFER_LIST_REFCOUNT(nbl)));
|
||||||
ASSERT(InterlockedGet64(NET_BUFFER_LIST_REFCOUNT(nbl)) < MAXLONG64);
|
|
||||||
InterlockedIncrement64(NET_BUFFER_LIST_REFCOUNT(nbl));
|
InterlockedIncrement64(NET_BUFFER_LIST_REFCOUNT(nbl));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -568,7 +565,6 @@ static void TunSendNetBufferLists(NDIS_HANDLE MiniportAdapterContext, NET_BUFFER
|
|||||||
{
|
{
|
||||||
TUN_CTX *ctx = (TUN_CTX *)MiniportAdapterContext;
|
TUN_CTX *ctx = (TUN_CTX *)MiniportAdapterContext;
|
||||||
|
|
||||||
ASSERT(InterlockedGet64(&ctx->ActiveTransactionCount) < MAXLONG64);
|
|
||||||
InterlockedIncrement64(&ctx->ActiveTransactionCount);
|
InterlockedIncrement64(&ctx->ActiveTransactionCount);
|
||||||
|
|
||||||
KIRQL irql = ExAcquireSpinLockShared(&ctx->TransitionLock);
|
KIRQL irql = ExAcquireSpinLockShared(&ctx->TransitionLock);
|
||||||
@ -649,7 +645,6 @@ static NTSTATUS TunDispatchWrite(_Inout_ TUN_CTX *ctx, _Inout_ IRP *Irp)
|
|||||||
{
|
{
|
||||||
NTSTATUS status;
|
NTSTATUS status;
|
||||||
|
|
||||||
ASSERT(InterlockedGet64(&ctx->ActiveTransactionCount) < MAXLONG64);
|
|
||||||
InterlockedIncrement64(&ctx->ActiveTransactionCount);
|
InterlockedIncrement64(&ctx->ActiveTransactionCount);
|
||||||
|
|
||||||
KIRQL irql = ExAcquireSpinLockShared(&ctx->TransitionLock);
|
KIRQL irql = ExAcquireSpinLockShared(&ctx->TransitionLock);
|
||||||
@ -825,7 +820,6 @@ static NTSTATUS TunDispatchCreate(_Inout_ TUN_CTX *ctx, _Inout_ IRP *Irp)
|
|||||||
if (!NT_SUCCESS(status = IoAcquireRemoveLock(&ctx->Device.RemoveLock, stack->FileObject)))
|
if (!NT_SUCCESS(status = IoAcquireRemoveLock(&ctx->Device.RemoveLock, stack->FileObject)))
|
||||||
goto cleanup_ExReleaseSpinLockShared;
|
goto cleanup_ExReleaseSpinLockShared;
|
||||||
|
|
||||||
ASSERT(InterlockedGet64(&ctx->Device.RefCount) < MAXLONG64);
|
|
||||||
if (InterlockedIncrement64(&ctx->Device.RefCount) > 0)
|
if (InterlockedIncrement64(&ctx->Device.RefCount) > 0)
|
||||||
TunIndicateStatus(ctx->MiniportAdapterHandle, MediaConnectStateConnected);
|
TunIndicateStatus(ctx->MiniportAdapterHandle, MediaConnectStateConnected);
|
||||||
|
|
||||||
@ -1231,7 +1225,6 @@ static NDIS_STATUS TunInitializeEx(NDIS_HANDLE MiniportAdapterHandle, NDIS_HANDL
|
|||||||
* of the MiniportInitializeEx function.
|
* of the MiniportInitializeEx function.
|
||||||
*/
|
*/
|
||||||
TunIndicateStatus(MiniportAdapterHandle, MediaConnectStateDisconnected);
|
TunIndicateStatus(MiniportAdapterHandle, MediaConnectStateDisconnected);
|
||||||
ASSERT(InterlockedGet64(&AdapterCount) < MAXLONG64);
|
|
||||||
InterlockedIncrement64(&AdapterCount);
|
InterlockedIncrement64(&AdapterCount);
|
||||||
InterlockedOr(&ctx->Flags, TUN_FLAGS_PRESENT);
|
InterlockedOr(&ctx->Flags, TUN_FLAGS_PRESENT);
|
||||||
return NDIS_STATUS_SUCCESS;
|
return NDIS_STATUS_SUCCESS;
|
||||||
|
Loading…
Reference in New Issue
Block a user