From 2f67b00dde9df21da12b5b15db2d55247522fab8 Mon Sep 17 00:00:00 2001 From: Dmytro Prokopchuk Date: Wed, 30 Sep 2026 08:49:35 +0200 Subject: [PATCH] misra: deviate MISRA C Rule 5.5 for hypfs_alloc_dyndata() MISRA C Rule 5.5 states: "Identifiers shall be distinct from macro names". Update ECLAIR configuration to deviate identifier and macro name clashes by specifying the macros that should be ignored. This includes hypfs_alloc_dyndata(), where the real function takes an allocation size and the same-named macro is a typed convenience wrapper that expands calls using sizeof(type). Update deviations.rst and rules.rst accordingly. Signed-off-by: Dmytro Prokopchuk Acked-by: Jan Beulich --- automation/eclair_analysis/ECLAIR/deviations.ecl | 4 ++++ docs/misra/deviations.rst | 9 +++++++++ docs/misra/rules.rst | 4 ++++ 3 files changed, 17 insertions(+) diff --git a/automation/eclair_analysis/ECLAIR/deviations.ecl b/automation/eclair_analysis/ECLAIR/deviations.ecl index 33d508a2fb..400413f8f5 100644 --- a/automation/eclair_analysis/ECLAIR/deviations.ecl +++ b/automation/eclair_analysis/ECLAIR/deviations.ecl @@ -133,6 +133,10 @@ These macros address differences in argument count during compile-time, effectiv -config=MC3A2.R5.5,ignored_macros+="name(update_gnttab_par||parse_gnttab_limit)&&loc(file(^xen/common/grant_table\\.c$))" -doc_end +-doc_begin="Clash between hypfs_alloc_dyndata() function and macro name in xen/include/xen/hypfs.h is deliberate." +-config=MC3A2.R5.5,ignored_macros+="name(hypfs_alloc_dyndata)&&loc(file(^xen/include/xen/hypfs\\.h$))" +-doc_end + -doc_begin="The type \"ret_t\" is deliberately defined multiple times, depending on the guest." -config=MC3A2.R5.6,reports+={deliberate,"any_area(any_loc(text(^.*ret_t.*$)))"} diff --git a/docs/misra/deviations.rst b/docs/misra/deviations.rst index b048309596..6bcc2adf95 100644 --- a/docs/misra/deviations.rst +++ b/docs/misra/deviations.rst @@ -176,6 +176,15 @@ Deviations related to MISRA C:2012 Rules: unused 2nd and 3rd parameters to avoid warnings or errors related to them. - ECLAIR has been configured to ignore these macros. + * - R5.5 + - Clash between the hypfs_alloc_dyndata() function and macro name in the + file xen/include/xen/hypfs.h is deliberate. The function is the allocator + taking a size in bytes, while the macro is a typed convenience wrapper used + by dynamic hypfs nodes to allocate per-request traversal data with the + correct size and return type. The implementation explicitly undefines the + macro before defining the real function, so the name clash is controlled. + - ECLAIR has been configured to ignore this macro. + * - R5.6 - The type ret_t is deliberately defined multiple times depending on the type of guest to service. diff --git a/docs/misra/rules.rst b/docs/misra/rules.rst index c9bbab6c08..a59cf1782e 100644 --- a/docs/misra/rules.rst +++ b/docs/misra/rules.rst @@ -223,6 +223,10 @@ maintainers if you want to suggest a change. Clashes between grant table functions and macro names are allowed because they are used for discarding unused parameters. + Clash between hypfs_alloc_dyndata() function and macro name in the + file xen/include/xen/hypfs.h is allowed because the macro is a typed + convenience wrapper around the size-based allocation function. + * - `Rule 5.6 `_ - Required - A typedef name shall be a unique identifier