Message ID | 20240712062452.31457-1-anisinha@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | hw/vmcoreinfo: make guest format endian safe | expand |
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 --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)
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(-)