xen/gnttab: address a violation of MISRA C Rule 13.6

guest_handle_ok()'s expansion contains a sizeof() involving its
first argument guest_handle_cast().
The expansion of the latter, in turn, contains a variable
initialization.

Since MISRA considers the initialization (even of a local variable)
a side effect, the chain of expansions mentioned above violates
MISRA C:2012 Rule 13.6 (The operand of the `sizeof' operator shall not
contain any expression which has potential side effect).

Refactor the code to address the rule violation.

Suggested-by: Andrew Cooper <andrew.cooper3@citrix.com>
Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
This commit is contained in:
Federico Serafini authored and Stefano Stabellini committed 2024-10-04 14:24:05 -07:00
1 parent 6f621f23bc
commit a0094dc136
1 file changed
+9 -6
+9 -6
View File
@@ -78,12 +78,15 @@ int compat_grant_table_op(
cmd_op = cmd;
switch ( cmd_op )
{
#define CASE(name) \
case GNTTABOP_##name: \
if ( unlikely(!guest_handle_okay(guest_handle_cast(uop, \
gnttab_##name##_compat_t), \
count)) ) \
rc = -EFAULT; \
#define CASE(name) \
case GNTTABOP_ ## name: \
{ \
XEN_GUEST_HANDLE_PARAM(gnttab_ ## name ## _compat_t) h = \
guest_handle_cast(uop, gnttab_ ## name ## _compat_t); \
\
if ( unlikely(!guest_handle_okay(h, count)) ) \
rc = -EFAULT; \
} \
break
#ifndef CHECK_gnttab_map_grant_ref
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.