On 2026-02-25 17:05, Andrew Cooper wrote:
On 20/02/2026 10:45 pm, Nicola Vetrini wrote:
On 2026-02-20 22:46, Andrew Cooper wrote:
Fixing Rule 20.7 violations.

No functional change.

Signed-off-by: Andrew Cooper <[email protected]>

Reviewed-by: Nicola Vetrini <[email protected]>

Thanks.

diff --git a/xen/common/livepatch.c b/xen/common/livepatch.c
index 7446533c8cfb..63473925cafb 100644
--- a/xen/common/livepatch.c
+++ b/xen/common/livepatch.c
@@ -664,9 +664,10 @@ static inline int
livepatch_check_expectations(const struct payload *payload)
     const struct livepatch_elf_sec *__sec =
livepatch_elf_sec_by_name(elf, section_name); \
     if ( !__sec
)                                                     
                   \
        
break;                                                        
                   \
-    if ( !section_ok(elf, __sec, sizeof(*hook)) ||
__sec->sec->sh_size != sizeof(*hook) ) \
+    if ( !section_ok(elf, __sec, sizeof(*(hook)))
||                                      \
+         __sec->sec->sh_size != sizeof(*(hook))
)                                         \
         return
-EINVAL;                                               
                   \
-    hook =
__sec->addr;                                               
                   \
+    (hook) =
__sec->addr;                                             
                   \

This is not strictly needed, if not for consistency.

That explains why my first try didn't succeed.  But, why is it that only
MISRA only cares about bracketing for rvalues, not lvalues ?


It was actually asked by Xen maintainers to introduce this special case on the grounds that it is extremely unlikely to result in an operator precedence mishap that leads to incorrect expansion. See below:

-doc_begin="Code violating Rule 20.7 is safe when macro parameters are used: (1) as function arguments; (2) as macro arguments; (3) as array indices; (4) as lhs in assignments; (5) as initializers, possibly designated, in initalizer lists;
(6) as the constant expression in a switch clause label."
-config=MC3A2.R20.7,expansion_context=
[...]


--
Nicola Vetrini, B.Sc.
Software Engineer
BUGSENG (https://bugseng.com)
LinkedIn: https://www.linkedin.com/in/nicola-vetrini-a42471253

Reply via email to