|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH 3/5] Update IRQL annotations
Many functions don't need to be called from DISPATCH_LEVEL, mostly the
ones that raise the IRQL on their own.
This also requires fixing IRQL and other annotations in various places.
Signed-off-by: Tu Dinh <ngoc-tu.dinh@xxxxxxxxxx>
---
src/xenvif/controller.c | 5 ++++-
src/xenvif/frontend.c | 20 +++++++++++---------
src/xenvif/frontend.h | 18 +++++++++---------
src/xenvif/receiver.c | 24 ++++++++++++------------
src/xenvif/receiver.h | 14 +++++++-------
src/xenvif/transmitter.c | 11 +++++++----
src/xenvif/transmitter.h | 6 +++---
7 files changed, 53 insertions(+), 45 deletions(-)
diff --git a/src/xenvif/controller.c b/src/xenvif/controller.c
index ca854ef..dac6952 100644
--- a/src/xenvif/controller.c
+++ b/src/xenvif/controller.c
@@ -118,10 +118,11 @@ __ControllerReleaseLock(
IN PXENVIF_CONTROLLER Controller
)
{
-#pragma prefast(suppress:26110) // Caller failing to hold lock
KeReleaseSpinLockFromDpcLevel(&Controller->Lock);
}
+_Acquires_nonreentrant_lock_(Controller)
+_IRQL_requires_(DISPATCH_LEVEL)
static VOID
ControllerAcquireLock(
IN PXENVIF_CONTROLLER Controller
@@ -130,6 +131,8 @@ ControllerAcquireLock(
__ControllerAcquireLock(Controller);
}
+_Requires_lock_held_(Controller)
+_IRQL_requires_(DISPATCH_LEVEL)
static VOID
ControllerReleaseLock(
IN PXENVIF_CONTROLLER Controller
diff --git a/src/xenvif/frontend.c b/src/xenvif/frontend.c
index 5cdb9a1..f2665e8 100644
--- a/src/xenvif/frontend.c
+++ b/src/xenvif/frontend.c
@@ -983,7 +983,7 @@ fail1:
return status;
}
-_IRQL_requires_(DISPATCH_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
NTSTATUS
FrontendSetMulticastAddresses(
IN PXENVIF_FRONTEND Frontend,
@@ -1151,7 +1151,7 @@ fail1:
return status;
}
-_IRQL_requires_(DISPATCH_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
NTSTATUS
FrontendSetFilterLevel(
IN PXENVIF_FRONTEND Frontend,
@@ -1193,7 +1193,7 @@ fail1:
return status;
}
-_IRQL_requires_(DISPATCH_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
VOID
FrontendAdvertiseIpAddresses(
IN PXENVIF_FRONTEND Frontend
@@ -1977,7 +1977,7 @@ fail1:
return status;
}
-_IRQL_requires_(DISPATCH_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
NTSTATUS
FrontendSetHashAlgorithm(
IN PXENVIF_FRONTEND Frontend,
@@ -2044,7 +2044,7 @@ fail1:
return status;
}
-_IRQL_requires_(DISPATCH_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
NTSTATUS
FrontendQueryHashTypes(
IN PXENVIF_FRONTEND Frontend,
@@ -2084,7 +2084,7 @@ fail1:
return status;
}
-_IRQL_requires_(DISPATCH_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
NTSTATUS
FrontendSetHashMapping(
IN PXENVIF_FRONTEND Frontend,
@@ -2128,7 +2128,7 @@ fail1:
return status;
}
-_IRQL_requires_(DISPATCH_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
NTSTATUS
FrontendSetHashKey(
IN PXENVIF_FRONTEND Frontend,
@@ -2163,7 +2163,7 @@ fail1:
return status;
}
-_IRQL_requires_(DISPATCH_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
NTSTATUS
FrontendSetHashTypes(
IN PXENVIF_FRONTEND Frontend,
@@ -2533,7 +2533,7 @@ FrontendDisable(
Trace("<====\n");
}
-_IRQL_requires_(DISPATCH_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
NTSTATUS
FrontendSetState(
IN PXENVIF_FRONTEND Frontend,
@@ -2711,6 +2711,7 @@ __FrontendSuspend(
(VOID) FrontendSetState(Frontend, FRONTEND_UNKNOWN);
}
+_IRQL_requires_(HIGH_LEVEL)
static DECLSPEC_NOINLINE VOID
FrontendSuspendCallbackEarly(
IN PVOID Argument
@@ -2721,6 +2722,7 @@ FrontendSuspendCallbackEarly(
Frontend->Online = FALSE;
}
+_IRQL_requires_(DISPATCH_LEVEL)
static DECLSPEC_NOINLINE VOID
FrontendSuspendCallbackLate(
IN PVOID Argument
diff --git a/src/xenvif/frontend.h b/src/xenvif/frontend.h
index 5b84806..e062ed0 100644
--- a/src/xenvif/frontend.h
+++ b/src/xenvif/frontend.h
@@ -74,7 +74,7 @@ FrontendEjectFailed(
IN PXENVIF_FRONTEND Frontend
);
-_IRQL_requires_(DISPATCH_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
extern NTSTATUS
FrontendSetState(
IN PXENVIF_FRONTEND Frontend,
@@ -194,7 +194,7 @@ FrontendIncrementStatistic(
IN ULONGLONG Delta
);
-_IRQL_requires_(DISPATCH_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
extern NTSTATUS
FrontendSetMulticastAddresses(
IN PXENVIF_FRONTEND Frontend,
@@ -202,7 +202,7 @@ FrontendSetMulticastAddresses(
IN ULONG Count
);
-_IRQL_requires_(DISPATCH_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
extern NTSTATUS
FrontendSetFilterLevel(
IN PXENVIF_FRONTEND Frontend,
@@ -210,27 +210,27 @@ FrontendSetFilterLevel(
IN XENVIF_MAC_FILTER_LEVEL Level
);
-_IRQL_requires_(DISPATCH_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
extern VOID
FrontendAdvertiseIpAddresses(
IN PXENVIF_FRONTEND Frontend
);
-_IRQL_requires_(DISPATCH_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
extern NTSTATUS
FrontendSetHashAlgorithm(
IN PXENVIF_FRONTEND Frontend,
IN XENVIF_PACKET_HASH_ALGORITHM Algorithm
);
-_IRQL_requires_(DISPATCH_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
extern NTSTATUS
FrontendQueryHashTypes(
IN PXENVIF_FRONTEND Frontend,
OUT PULONG Types
);
-_IRQL_requires_(DISPATCH_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
extern NTSTATUS
FrontendSetHashMapping(
IN PXENVIF_FRONTEND Frontend,
@@ -238,14 +238,14 @@ FrontendSetHashMapping(
IN ULONG Order
);
-_IRQL_requires_(DISPATCH_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
extern NTSTATUS
FrontendSetHashKey(
IN PXENVIF_FRONTEND Frontend,
IN PUCHAR Key
);
-_IRQL_requires_(DISPATCH_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
extern NTSTATUS
FrontendSetHashTypes(
IN PXENVIF_FRONTEND Frontend,
diff --git a/src/xenvif/receiver.c b/src/xenvif/receiver.c
index 8e6ec7f..0cd1867 100644
--- a/src/xenvif/receiver.c
+++ b/src/xenvif/receiver.c
@@ -2282,11 +2282,11 @@ __ReceiverRingUnmask(
Force);
}
-__drv_functionClass(KDEFERRED_ROUTINE)
-__drv_maxIRQL(DISPATCH_LEVEL)
-__drv_minIRQL(DISPATCH_LEVEL)
-__drv_requiresIRQL(DISPATCH_LEVEL)
-__drv_sameIRQL
+_Function_class_(KDEFERRED_ROUTINE)
+_IRQL_requires_max_(DISPATCH_LEVEL)
+_IRQL_requires_min_(DISPATCH_LEVEL)
+_IRQL_requires_(DISPATCH_LEVEL)
+_IRQL_requires_same_
static VOID
ReceiverRingPollDpc(
IN PKDPC Dpc,
@@ -3694,7 +3694,7 @@ ReceiverTeardown(
__ReceiverFree(Receiver);
}
-_IRQL_requires_(DISPATCH_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
VOID
ReceiverSetOffloadOptions(
IN PXENVIF_RECEIVER Receiver,
@@ -3725,7 +3725,7 @@ ReceiverSetOffloadOptions(
}
}
-_IRQL_requires_(DISPATCH_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
VOID
ReceiverSetBackfillSize(
IN PXENVIF_RECEIVER Receiver,
@@ -3752,7 +3752,7 @@ ReceiverSetBackfillSize(
}
}
-_IRQL_requires_(DISPATCH_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
VOID
ReceiverQueryRingSize(
IN PXENVIF_RECEIVER Receiver,
@@ -3875,7 +3875,7 @@ ReceiverSend(
__ReceiverRingSend(Ring, FALSE);
}
-_IRQL_requires_(DISPATCH_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
NTSTATUS
ReceiverSetHashAlgorithm(
IN PXENVIF_RECEIVER Receiver,
@@ -3919,7 +3919,7 @@ fail1:
return status;
}
-_IRQL_requires_(DISPATCH_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
NTSTATUS
ReceiverQueryHashCapabilities(
IN PXENVIF_RECEIVER Receiver,
@@ -3943,7 +3943,7 @@ fail1:
return status;
}
-_IRQL_requires_(DISPATCH_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
NTSTATUS
ReceiverUpdateHashParameters(
IN PXENVIF_RECEIVER Receiver,
@@ -4039,7 +4039,7 @@ fail1:
return status;
}
-_IRQL_requires_(DISPATCH_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
NTSTATUS
ReceiverUpdateHashMapping(
IN PXENVIF_RECEIVER Receiver,
diff --git a/src/xenvif/receiver.h b/src/xenvif/receiver.h
index d093dd0..96cec02 100644
--- a/src/xenvif/receiver.h
+++ b/src/xenvif/receiver.h
@@ -91,21 +91,21 @@ ReceiverWaitForPackets(
IN PXENVIF_RECEIVER Receiver
);
-_IRQL_requires_(DISPATCH_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
extern VOID
ReceiverQueryRingSize(
IN PXENVIF_RECEIVER Receiver,
OUT PULONG Size
);
-_IRQL_requires_(DISPATCH_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
extern VOID
ReceiverSetOffloadOptions(
IN PXENVIF_RECEIVER Receiver,
IN XENVIF_VIF_OFFLOAD_OPTIONS Options
);
-_IRQL_requires_(DISPATCH_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
extern VOID
ReceiverSetBackfillSize(
IN PXENVIF_RECEIVER Receiver,
@@ -133,21 +133,21 @@ ReceiverSend(
IN ULONG Index
);
-_IRQL_requires_(DISPATCH_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
NTSTATUS
ReceiverSetHashAlgorithm(
IN PXENVIF_RECEIVER Receiver,
IN XENVIF_PACKET_HASH_ALGORITHM Algorithm
);
-_IRQL_requires_(DISPATCH_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
NTSTATUS
ReceiverQueryHashCapabilities(
IN PXENVIF_RECEIVER Receiver,
OUT PULONG Types
);
-_IRQL_requires_(DISPATCH_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
NTSTATUS
ReceiverUpdateHashParameters(
IN PXENVIF_RECEIVER Receiver,
@@ -155,7 +155,7 @@ ReceiverUpdateHashParameters(
IN PUCHAR Key
);
-_IRQL_requires_(DISPATCH_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
NTSTATUS
ReceiverUpdateHashMapping(
IN PXENVIF_RECEIVER Receiver,
diff --git a/src/xenvif/transmitter.c b/src/xenvif/transmitter.c
index 05a2002..0f7deb1 100644
--- a/src/xenvif/transmitter.c
+++ b/src/xenvif/transmitter.c
@@ -248,6 +248,8 @@ __TransmitterFree(
__FreePoolWithTag(Buffer, XENVIF_TRANSMITTER_TAG);
}
+_Acquires_nonreentrant_lock_(Argument)
+_IRQL_requires_(DISPATCH_LEVEL)
static VOID
TransmitterPacketAcquireLock(
IN PVOID Argument
@@ -258,6 +260,8 @@ TransmitterPacketAcquireLock(
KeAcquireSpinLockAtDpcLevel(&Transmitter->Lock);
}
+_Requires_lock_held_(Argument)
+_IRQL_requires_(DISPATCH_LEVEL)
static VOID
TransmitterPacketReleaseLock(
IN PVOID Argument
@@ -265,7 +269,6 @@ TransmitterPacketReleaseLock(
{
PXENVIF_TRANSMITTER Transmitter = Argument;
-#pragma prefast(suppress:26110)
KeReleaseSpinLockFromDpcLevel(&Transmitter->Lock);
}
@@ -5301,7 +5304,7 @@ TransmitterQueueMulticastControl(
(VOID) __TransmitterRingQueueMulticastControl(Ring, Address, Add);
}
-_IRQL_requires_(DISPATCH_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
VOID
TransmitterQueryRingSize(
IN PXENVIF_TRANSMITTER Transmitter,
@@ -5332,7 +5335,7 @@ TransmitterNotify(
Ring->PollDpcs++;
}
-_IRQL_requires_(DISPATCH_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
VOID
TransmitterQueryOffloadOptions(
IN PXENVIF_TRANSMITTER Transmitter,
@@ -5453,7 +5456,7 @@ TransmitterQueryOffloadOptions(
MAXIMUM_IPV6_OPTIONS_LENGTH - \
MAXIMUM_TCP_HEADER_LENGTH)
-_IRQL_requires_(DISPATCH_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
VOID
TransmitterQueryLargePacketSize(
IN PXENVIF_TRANSMITTER Transmitter,
diff --git a/src/xenvif/transmitter.h b/src/xenvif/transmitter.h
index 30ef371..5e789f1 100644
--- a/src/xenvif/transmitter.h
+++ b/src/xenvif/transmitter.h
@@ -121,7 +121,7 @@ TransmitterQueueMulticastControl(
IN BOOLEAN Add
);
-_IRQL_requires_(DISPATCH_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
extern VOID
TransmitterQueryRingSize(
IN PXENVIF_TRANSMITTER Transmitter,
@@ -143,14 +143,14 @@ TransmitterQueuePacket(
IN PVOID Cookie
);
-_IRQL_requires_(DISPATCH_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
extern VOID
TransmitterQueryOffloadOptions(
IN PXENVIF_TRANSMITTER Transmitter,
OUT PXENVIF_VIF_OFFLOAD_OPTIONS Options
);
-_IRQL_requires_(DISPATCH_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
extern VOID
TransmitterQueryLargePacketSize(
IN PXENVIF_TRANSMITTER Transmitter,
--
2.53.0.windows.2
--
Ngoc Tu Dinh | Vates XCP-ng Developer
XCP-ng & Xen Orchestra - Vates solutions
web: https://vates.tech
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |