diff mbox series

hw/vmcoreinfo: make guest format endian safe

Message ID 20240712062452.31457-1-anisinha@redhat.com
State New
Headers show
Series hw/vmcoreinfo: make guest format endian safe | expand

Commit Message

Ani Sinha July 12, 2024, 6:24 a.m. UTC
Guest and host formats in struct FWCfgVMCoreInfo are written in little endian
format. However, the hypervisor host might be big endian. We need to do
appropriate conversions between the formats before comparing the values. Fix it.

Signed-off-by: Ani Sinha <anisinha@redhat.com>
---
 hw/misc/vmcoreinfo.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Marc-André Lureau July 12, 2024, 7:02 a.m. UTC | #1
Hi

On Fri, Jul 12, 2024 at 10:25 AM Ani Sinha <anisinha@redhat.com> wrote:
>
> Guest and host formats in struct FWCfgVMCoreInfo are written in little endian
> format. However, the hypervisor host might be big endian. We need to do
> appropriate conversions between the formats before comparing the values. Fix it.
>

Looks right, but that shouldn't matter since the comparison is with 0.

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>

> Signed-off-by: Ani Sinha <anisinha@redhat.com>
> ---
>  hw/misc/vmcoreinfo.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/hw/misc/vmcoreinfo.c b/hw/misc/vmcoreinfo.c
> index 833773ade5..e00df95e29 100644
> --- a/hw/misc/vmcoreinfo.c
> +++ b/hw/misc/vmcoreinfo.c
> @@ -21,9 +21,10 @@
>  static void fw_cfg_vmci_write(void *dev, off_t offset, size_t len)
>  {
>      VMCoreInfoState *s = VMCOREINFO(dev);
> +    uint16_t guest_format = le16_to_cpu(s->vmcoreinfo.guest_format);
>
>      s->has_vmcoreinfo = offset == 0 && len == sizeof(s->vmcoreinfo)
> -        && s->vmcoreinfo.guest_format != FW_CFG_VMCOREINFO_FORMAT_NONE;
> +        && guest_format != FW_CFG_VMCOREINFO_FORMAT_NONE;
>  }
>
>  static void vmcoreinfo_reset(void *dev)
> --
> 2.42.0
>
diff mbox series

Patch

diff --git a/hw/misc/vmcoreinfo.c b/hw/misc/vmcoreinfo.c
index 833773ade5..e00df95e29 100644
--- a/hw/misc/vmcoreinfo.c
+++ b/hw/misc/vmcoreinfo.c
@@ -21,9 +21,10 @@ 
 static void fw_cfg_vmci_write(void *dev, off_t offset, size_t len)
 {
     VMCoreInfoState *s = VMCOREINFO(dev);
+    uint16_t guest_format = le16_to_cpu(s->vmcoreinfo.guest_format);
 
     s->has_vmcoreinfo = offset == 0 && len == sizeof(s->vmcoreinfo)
-        && s->vmcoreinfo.guest_format != FW_CFG_VMCOREINFO_FORMAT_NONE;
+        && guest_format != FW_CFG_VMCOREINFO_FORMAT_NONE;
 }
 
 static void vmcoreinfo_reset(void *dev)