mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
EFI: address a violation of MISRA C Rule 13.6
guest_handle_ok()'s expansion contains a sizeof() involving its first argument which is 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> Acked-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
This commit is contained in:
1 parent
1223375d8b
commit
6f621f23bc
1 file changed
+10
-2
@@ -250,14 +250,20 @@ int efi_get_info(uint32_t idx, union xenpf_efi_info *info)
|
||||
info->cfg.addr = __pa(efi_ct);
|
||||
info->cfg.nent = efi_num_ct;
|
||||
break;
|
||||
|
||||
case XEN_FW_EFI_VENDOR:
|
||||
{
|
||||
XEN_GUEST_HANDLE_PARAM(CHAR16) vendor_name =
|
||||
guest_handle_cast(info->vendor.name, CHAR16);
|
||||
|
||||
if ( !efi_fw_vendor )
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
info->vendor.revision = efi_fw_revision;
|
||||
n = info->vendor.bufsz / sizeof(*efi_fw_vendor);
|
||||
if ( !guest_handle_okay(guest_handle_cast(info->vendor.name,
|
||||
CHAR16), n) )
|
||||
if ( !guest_handle_okay(vendor_name, n) )
|
||||
return -EFAULT;
|
||||
|
||||
for ( i = 0; i < n; ++i )
|
||||
{
|
||||
if ( __copy_to_guest_offset(info->vendor.name, i,
|
||||
@@ -267,6 +273,8 @@ int efi_get_info(uint32_t idx, union xenpf_efi_info *info)
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case XEN_FW_EFI_MEM_INFO:
|
||||
for ( i = 0; i < efi_memmap_size; i += efi_mdesc_size )
|
||||
{
|
||||
|
||||