diff --git a/docs/misra/safe.json b/docs/misra/safe.json index c213e0a0be..3f18ef401c 100644 --- a/docs/misra/safe.json +++ b/docs/misra/safe.json @@ -60,6 +60,14 @@ }, { "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" diff --git a/xen/include/xen/bitmap.h b/xen/include/xen/bitmap.h index b9f980e919..6ee39aa35a 100644 --- a/xen/include/xen/bitmap.h +++ b/xen/include/xen/bitmap.h @@ -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; \ }