|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH 11/17] xc: fix annotations
* XcGnttabPermitForeignAccess2 is called by XcGnttabPermitForeignAccess
with Address set to Null so Address should be annotated as In_opt.
* Some functions only write to their output parameters on success path,
and failure paths are handled correctly. We explicitly annotate the
expected valid path with _Success_ to suppress the corresponding
compiler warnings.
Signed-off-by: Césaire Mounah <cesaire.mounah@xxxxxxxxxx>
---
include/xencontrol.h | 11 ++++++++---
src/xencontrol/xencontrol.c | 23 ++++++++++++++---------
2 files changed, 22 insertions(+), 12 deletions(-)
diff --git a/include/xencontrol.h b/include/xencontrol.h
index f9f0570..4b916ec 100644
--- a/include/xencontrol.h
+++ b/include/xencontrol.h
@@ -74,8 +74,8 @@ XcSetLogLevel(
XENCONTROL_API
DWORD
XcOpen(
- _In_ XENCONTROL_LOGGER *Logger,
- _Outptr_ PXENCONTROL_CONTEXT *Xc
+ _In_ XENCONTROL_LOGGER *Logger,
+ _Outptr_result_maybenull_ PXENCONTROL_CONTEXT *Xc
);
/*! \brief Close the Xen Interface device
@@ -96,6 +96,7 @@ XcClose(
\return Error code
*/
XENCONTROL_API
+_Success_(return == ERROR_SUCCESS)
DWORD
XcEvtchnOpenUnbound(
_In_ PXENCONTROL_CONTEXT Xc,
@@ -115,6 +116,7 @@ XcEvtchnOpenUnbound(
\return Error code
*/
XENCONTROL_API
+_Success_(return == ERROR_SUCCESS)
DWORD
XcEvtchnBindInterdomain(
_In_ PXENCONTROL_CONTEXT Xc,
@@ -198,11 +200,12 @@ XcGnttabPermitForeignAccess(
\return Error code
*/
XENCONTROL_API
+_Success_(return == ERROR_SUCCESS)
DWORD
XcGnttabPermitForeignAccess2(
_In_ PXENCONTROL_CONTEXT Xc,
_In_ USHORT RemoteDomain,
- _In_ PVOID Address,
+ _In_opt_ PVOID Address,
_In_ ULONG NumberPages,
_In_ ULONG NotifyOffset,
_In_ ULONG NotifyPort,
@@ -235,6 +238,7 @@ XcGnttabRevokeForeignAccess(
\return Error code
*/
XENCONTROL_API
+_Success_(return == ERROR_SUCCESS)
DWORD
XcGnttabMapForeignPages(
_In_ PXENCONTROL_CONTEXT Xc,
@@ -341,6 +345,7 @@ XcStoreSetPermissions(
\return Error code
*/
XENCONTROL_API
+_Success_(return == ERROR_SUCCESS)
DWORD
XcStoreAddWatch(
_In_ PXENCONTROL_CONTEXT Xc,
diff --git a/src/xencontrol/xencontrol.c b/src/xencontrol/xencontrol.c
index 9ab760b..1fdfd0b 100644
--- a/src/xencontrol/xencontrol.c
+++ b/src/xencontrol/xencontrol.c
@@ -85,16 +85,16 @@ XcSetLogLevel(
DWORD
XcOpen(
- _In_ XENCONTROL_LOGGER *Logger,
- _Outptr_ PXENCONTROL_CONTEXT *Xc
+ _In_ XENCONTROL_LOGGER *Logger,
+ _Outptr_result_maybenull_ PXENCONTROL_CONTEXT *Xc
)
{
- HDEVINFO DevInfo;
- SP_DEVICE_INTERFACE_DATA InterfaceData;
- SP_DEVICE_INTERFACE_DETAIL_DATA *DetailData = NULL;
- DWORD BufferSize;
- PXENCONTROL_CONTEXT Context;
- DWORD Status = ERROR_OUTOFMEMORY;
+ HDEVINFO DevInfo;
+ SP_DEVICE_INTERFACE_DATA InterfaceData;
+ SP_DEVICE_INTERFACE_DETAIL_DATA *DetailData = NULL;
+ DWORD BufferSize;
+ PXENCONTROL_CONTEXT Context;
+ DWORD Status = ERROR_OUTOFMEMORY;
Context = malloc(sizeof(*Context));
if (Context == NULL)
@@ -185,6 +185,7 @@ XcClose(
free(Xc);
}
+_Success_(return == ERROR_SUCCESS)
DWORD
XcEvtchnOpenUnbound(
_In_ PXENCONTROL_CONTEXT Xc,
@@ -225,6 +226,7 @@ end:
return Status;
}
+_Success_(return == ERROR_SUCCESS)
DWORD
XcEvtchnBindInterdomain(
_In_ PXENCONTROL_CONTEXT Xc,
@@ -381,11 +383,12 @@ XcGnttabPermitForeignAccess(
References);
}
+_Success_(return == ERROR_SUCCESS)
DWORD
XcGnttabPermitForeignAccess2(
_In_ PXENCONTROL_CONTEXT Xc,
_In_ USHORT RemoteDomain,
- _In_ PVOID Address,
+ _In_opt_ PVOID Address,
_In_ ULONG NumberPages,
_In_ ULONG NotifyOffset,
_In_ ULONG NotifyPort,
@@ -482,6 +485,7 @@ XcGnttabRevokeForeignAccess(
return Status;
}
+_Success_(return == ERROR_SUCCESS)
DWORD
XcGnttabMapForeignPages(
_In_ PXENCONTROL_CONTEXT Xc,
@@ -761,6 +765,7 @@ end:
return Status;
}
+_Success_(return == ERROR_SUCCESS)
DWORD
XcStoreAddWatch(
_In_ PXENCONTROL_CONTEXT Xc,
--
2.55.0.windows.5
--
Césaire Mounah | Vates Windows Guest Tools Engineer
XCP-ng & Xen Orchestra - Vates solutions
web: https://vates.tech
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |