]> xenbits.xensource.com Git - xen.git/commitdiff
automation/eclair: address violations of MISRA C Rule 20.7
authorNicola Vetrini <nicola.vetrini@bugseng.com>
Thu, 27 Jun 2024 11:45:18 +0000 (13:45 +0200)
committerJan Beulich <jbeulich@suse.com>
Thu, 27 Jun 2024 11:45:18 +0000 (13:45 +0200)
MISRA C Rule 20.7 states: "Expressions resulting from the expansion
of macro parameters shall be enclosed in parentheses".

The helper macro bitmap_switch has parameters that cannot be parenthesized
in order to comply with the rule, as that would break its functionality.
Moreover, the risk of misuse due developer confusion is deemed not
substantial enough to warrant a more involved refactor, thus the macro
is deviated for this rule.

No functional change.

Signed-off-by: Nicola Vetrini <nicola.vetrini@bugseng.com>
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
Release-Acked-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
docs/misra/safe.json
xen/include/xen/bitmap.h

index c213e0a0be3bff5a7cc9b828ba7776c742ecb959..3f18ef401c7d6b55e7208b0566737406fdf52ed3 100644 (file)
         },
         {
             "id": "SAF-7-safe",
+            "analyser": {
+                "eclair": "MC3R1.R20.7"
+            },
+            "name": "MC3R1.R20.7: deliberately non-parenthesized macro argument",
+            "text": "A macro parameter expands to an expression that is non-parenthesized, as doing so would break the functionality."
+        },
+        {
+            "id": "SAF-8-safe",
             "analyser": {},
             "name": "Sentinel",
             "text": "Next ID to be used"
index b9f980e919307d8972f3ce83c28b0a68df25f52b..6ee39aa35ac6f0b32457b1a7e99a8e09f06820d5 100644 (file)
@@ -103,10 +103,13 @@ extern int bitmap_allocate_region(unsigned long *bitmap, int pos, int order);
 #define bitmap_switch(nbits, zero, small, large)                         \
        unsigned int n__ = (nbits);                                       \
        if (__builtin_constant_p(nbits) && !n__) {                        \
+               /* SAF-7-safe Rule 20.7 non-parenthesized macro argument */ \
                zero;                                                     \
        } else if (__builtin_constant_p(nbits) && n__ <= BITS_PER_LONG) { \
+               /* SAF-7-safe Rule 20.7 non-parenthesized macro argument */ \
                small;                                                    \
        } else {                                                          \
+               /* SAF-7-safe Rule 20.7 non-parenthesized macro argument */ \
                large;                                                    \
        }