|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen master] EFI: address a violation of MISRA C Rule 13.6
commit 6f621f23bc3eb76fd8440d69ef4ed6bec0fb2eff
Author: Federico Serafini <federico.serafini@xxxxxxxxxxx>
AuthorDate: Mon Sep 30 14:49:15 2024 +0200
Commit: Stefano Stabellini <stefano.stabellini@xxxxxxx>
CommitDate: Fri Oct 4 14:23:15 2024 -0700
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@xxxxxxxxxx>
Signed-off-by: Federico Serafini <federico.serafini@xxxxxxxxxxx>
Reviewed-by: Stefano Stabellini <sstabellini@xxxxxxxxxx>
Acked-by: Marek Marczykowski-Górecki <marmarek@xxxxxxxxxxxxxxxxxxxxxx>
---
xen/common/efi/runtime.c | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/xen/common/efi/runtime.c b/xen/common/efi/runtime.c
index d03e5c90ce..acf08dcaa3 100644
--- a/xen/common/efi/runtime.c
+++ b/xen/common/efi/runtime.c
@@ -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 )
{
--
generated by git-patchbot for /home/xen/git/xen.git#master
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |