[Qemu-devel] [PATCH] Bugfix: Handle error if VM Generation ID device not present

ben@skyportsystems.com posted 1 patch 7 years ago
Failed in applying to current master (apply log)
hmp.c             | 4 +++-
hw/acpi/vmgenid.c | 1 +
2 files changed, 4 insertions(+), 1 deletion(-)
[Qemu-devel] [PATCH] Bugfix: Handle error if VM Generation ID device not present
Posted by ben@skyportsystems.com 7 years ago
From: Ben Warren <ben@skyportsystems.com>

This was crashing due to NULL-pointer dereference

QMP Test case:
==============

(QEMU) query-vm-generation-id
{"error": {"class": "GenericError", "desc": "VM Generation ID device not
found"}}

HMP Test case:
==============
virsh # qemu-monitor-command --hmp 3 info vm-generation-id
VM Generation ID device not found

Signed-off-by: Ben Warren <ben@skyportsystems.com>
---
 hmp.c             | 4 +++-
 hw/acpi/vmgenid.c | 1 +
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/hmp.c b/hmp.c
index 261843f..edb8970 100644
--- a/hmp.c
+++ b/hmp.c
@@ -2608,9 +2608,11 @@ void hmp_hotpluggable_cpus(Monitor *mon, const QDict *qdict)
 
 void hmp_info_vm_generation_id(Monitor *mon, const QDict *qdict)
 {
-    GuidInfo *info = qmp_query_vm_generation_id(NULL);
+    Error *err = NULL;
+    GuidInfo *info = qmp_query_vm_generation_id(&err);
     if (info) {
         monitor_printf(mon, "%s\n", info->guid);
     }
+    hmp_handle_error(mon, &err);
     qapi_free_GuidInfo(info);
 }
diff --git a/hw/acpi/vmgenid.c b/hw/acpi/vmgenid.c
index 744f284..7a3ad17 100644
--- a/hw/acpi/vmgenid.c
+++ b/hw/acpi/vmgenid.c
@@ -248,6 +248,7 @@ GuidInfo *qmp_query_vm_generation_id(Error **errp)
     Object *obj = find_vmgenid_dev();
 
     if (!obj) {
+        error_setg(errp, "VM Generation ID device not found");
         return NULL;
     }
     vms = VMGENID(obj);
-- 
2.7.4


Re: [Qemu-devel] [PATCH] Bugfix: Handle error if VM Generation ID device not present
Posted by Eric Blake 7 years ago
On 03/02/2017 03:36 PM, ben@skyportsystems.com wrote:
> From: Ben Warren <ben@skyportsystems.com>
> 
> This was crashing due to NULL-pointer dereference
> 
> QMP Test case:
> ==============
> 
> (QEMU) query-vm-generation-id
> {"error": {"class": "GenericError", "desc": "VM Generation ID device not
> found"}}
> 
> HMP Test case:
> ==============
> virsh # qemu-monitor-command --hmp 3 info vm-generation-id
> VM Generation ID device not found
> 
> Signed-off-by: Ben Warren <ben@skyportsystems.com>
> ---
>  hmp.c             | 4 +++-
>  hw/acpi/vmgenid.c | 1 +
>  2 files changed, 4 insertions(+), 1 deletion(-)

Reviewed-by: Eric Blake <eblake@redhat.com>

However, hw/acpi/vmgenid.c is not part of the tree yet, so it may be
better to just respin the pull request to incorporate this into the
problematic patch that introduced the problem, rather than needing a
followup patch.

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

Re: [Qemu-devel] [PATCH] Bugfix: Handle error if VM Generation ID device not present
Posted by Michael S. Tsirkin 7 years ago
On Thu, Mar 02, 2017 at 03:41:33PM -0600, Eric Blake wrote:
> On 03/02/2017 03:36 PM, ben@skyportsystems.com wrote:
> > From: Ben Warren <ben@skyportsystems.com>
> > 
> > This was crashing due to NULL-pointer dereference
> > 
> > QMP Test case:
> > ==============
> > 
> > (QEMU) query-vm-generation-id
> > {"error": {"class": "GenericError", "desc": "VM Generation ID device not
> > found"}}
> > 
> > HMP Test case:
> > ==============
> > virsh # qemu-monitor-command --hmp 3 info vm-generation-id
> > VM Generation ID device not found
> > 
> > Signed-off-by: Ben Warren <ben@skyportsystems.com>
> > ---
> >  hmp.c             | 4 +++-
> >  hw/acpi/vmgenid.c | 1 +
> >  2 files changed, 4 insertions(+), 1 deletion(-)
> 
> Reviewed-by: Eric Blake <eblake@redhat.com>
> 
> However, hw/acpi/vmgenid.c is not part of the tree yet, so it may be
> better to just respin the pull request to incorporate this into the
> problematic patch that introduced the problem, rather than needing a
> followup patch.
> 
> -- 
> Eric Blake   eblake redhat com    +1-919-301-3266
> Libvirt virtualization library http://libvirt.org
> 

The issue seems minor enough.
I don't plan to re-spin unless there are more issues.

-- 
MST

Re: [Qemu-devel] [PATCH] Bugfix: Handle error if VM Generation ID device not present
Posted by Laszlo Ersek 7 years ago
On 03/02/17 22:36, ben@skyportsystems.com wrote:
> From: Ben Warren <ben@skyportsystems.com>
> 
> This was crashing due to NULL-pointer dereference
> 
> QMP Test case:
> ==============
> 
> (QEMU) query-vm-generation-id
> {"error": {"class": "GenericError", "desc": "VM Generation ID device not
> found"}}
> 
> HMP Test case:
> ==============
> virsh # qemu-monitor-command --hmp 3 info vm-generation-id
> VM Generation ID device not found
> 
> Signed-off-by: Ben Warren <ben@skyportsystems.com>
> ---
>  hmp.c             | 4 +++-
>  hw/acpi/vmgenid.c | 1 +
>  2 files changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/hmp.c b/hmp.c
> index 261843f..edb8970 100644
> --- a/hmp.c
> +++ b/hmp.c
> @@ -2608,9 +2608,11 @@ void hmp_hotpluggable_cpus(Monitor *mon, const QDict *qdict)
>  
>  void hmp_info_vm_generation_id(Monitor *mon, const QDict *qdict)
>  {
> -    GuidInfo *info = qmp_query_vm_generation_id(NULL);
> +    Error *err = NULL;
> +    GuidInfo *info = qmp_query_vm_generation_id(&err);
>      if (info) {
>          monitor_printf(mon, "%s\n", info->guid);
>      }
> +    hmp_handle_error(mon, &err);
>      qapi_free_GuidInfo(info);
>  }
> diff --git a/hw/acpi/vmgenid.c b/hw/acpi/vmgenid.c
> index 744f284..7a3ad17 100644
> --- a/hw/acpi/vmgenid.c
> +++ b/hw/acpi/vmgenid.c
> @@ -248,6 +248,7 @@ GuidInfo *qmp_query_vm_generation_id(Error **errp)
>      Object *obj = find_vmgenid_dev();
>  
>      if (!obj) {
> +        error_setg(errp, "VM Generation ID device not found");
>          return NULL;
>      }
>      vms = VMGENID(obj);
> 

Reviewed-by: Laszlo Ersek <lersek@redhat.com>