MISRA C Rule 17.1 states: "The features of `<stdarg.h>' shall not be used"

The Xen community wants to avoid using variadic functions except for
specific circumstances where it feels appropriate by strict code review.

Functions hypercall_create_continuation and hypercall_xlat_continuation
are internal helper functions made to break long running hypercalls into
multiple calls. They take a variable number of arguments depending on the
original hypercall they are trying to continue.

Add SAF deviations for the aforementioned functions.

Signed-off-by: Simone Ballarin <simone.ballarin@bugseng.com>
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
This commit is contained in:
Simone Ballarin authored and Stefano Stabellini committed 2024-04-05 11:15:47 -07:00
1 parent ea33a6e1e3
commit 402c2d3e66
3 files changed
+11

No files matched your search

+8
View File
@@ -36,6 +36,14 @@
},
{
"id": "SAF-4-safe",
"analyser": {
"eclair": "MC3R1.R17.1"
},
"name": "Rule 17.1: internal helper functions made to break long running hypercalls into multiple calls.",
"text": "They need to take a variable number of arguments depending on the original hypercall they are trying to continue."
},
{
"id": "SAF-5-safe",
"analyser": {},
"name": "Sentinel",
"text": "Next ID to be used"
+1
View File
@@ -382,6 +382,7 @@ unsigned long hypercall_create_continuation(
const char *p = format;
unsigned long arg, rc;
unsigned int i;
/* SAF-4-safe allowed variadic function */
va_list args;
current->hcall_preempted = true;
+2
View File
@@ -31,6 +31,7 @@ unsigned long hypercall_create_continuation(
const char *p = format;
unsigned long arg;
unsigned int i;
/* SAF-4-safe allowed variadic function */
va_list args;
curr->hcall_preempted = true;
@@ -115,6 +116,7 @@ int hypercall_xlat_continuation(unsigned int *id, unsigned int nr,
struct cpu_user_regs *regs;
unsigned int i, cval = 0;
unsigned long nval = 0;
/* SAF-4-safe allowed variadic function */
va_list args;
ASSERT(nr <= ARRAY_SIZE(mcs->call.args));
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.