qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] qdev: fix -device scsi-hd,help regression


From: Igor Mammedov
Subject: Re: [Qemu-devel] [PATCH] qdev: fix -device scsi-hd,help regression
Date: Wed, 9 Jan 2019 17:12:24 +0100

On Wed,  9 Jan 2019 14:23:11 +0400
Marc-André Lureau <address@hidden> wrote:

> Since commit ea9ce8934, device_post_init() applies globals directly
> from machines and accelerator classes.
> 
> There are cases, such as -device scsi-hd,help, where the machine is
> setup but there in no accelerator.
> 
> Let's skip accelerator globals in this case.
> 
> Fixes SEGV:
>  #0  0x0000555558ea04ff in object_get_class (obj=0x0) at 
> /home/elmarco/src/qemu/build/../qom/object.c:857
>  #1  0x000055555854c797 in object_apply_compat_props (obj=0x616000078980) at 
> /home/elmarco/src/qemu/build/../hw/core/qdev.c:978
>  #2  0x000055555854c797 in object_apply_compat_props (obj=0x616000078980) at 
> /home/elmarco/src/qemu/build/../hw/core/qdev.c:973
>  #3  0x000055555854c959 in device_post_init (obj=0x616000078980) at 
> /home/elmarco/src/qemu/build/../hw/core/qdev.c:989
>  #4  0x0000555558e9e250 in object_post_init_with_type (ti=<optimized out>, 
> obj=0x616000078980) at /home/elmarco/src/qemu/build/../qom/object.c:365
>  #5  0x0000555558e9e250 in object_initialize_with_type (data=0x616000078980, 
> size=616, type=<optimized out>) at 
> /home/elmarco/src/qemu/build/../qom/object.c:425
>  #6  0x0000555558e9e571 in object_new_with_type (type=0x613000031900) at 
> /home/elmarco/src/qemu/build/../qom/object.c:588
>  #7  0x000055555830c048 in qmp_device_list_properties (address@hidden 
> "scsi-hd", address@hidden) at /home/elmarco/src/qemu/qmp.c:519
>  #8  0x00005555582c4027 in qdev_device_help (opts=<optimized out>) at 
> /home/elmarco/src/qemu/qdev-monitor.c:283
>  #9  0x0000555559378fa2 in qemu_opts_foreach (list=<optimized out>, 
> address@hidden <device_help_func>, address@hidden, address@hidden) at 
> /home/elmarco/src/qemu/util/qemu-option.c:1171
> 
> https://bugzilla.redhat.com/show_bug.cgi?id=1664364
> 
> Signed-off-by: Marc-André Lureau <address@hidden>

Reviewed-by: Igor Mammedov <address@hidden>

> ---
>  hw/core/qdev.c | 9 ++++++---
>  1 file changed, 6 insertions(+), 3 deletions(-)
> 
> diff --git a/hw/core/qdev.c b/hw/core/qdev.c
> index 3769a2bccb..47bddacb4f 100644
> --- a/hw/core/qdev.c
> +++ b/hw/core/qdev.c
> @@ -975,10 +975,13 @@ void object_apply_compat_props(Object *obj)
>      if (object_dynamic_cast(qdev_get_machine(), TYPE_MACHINE)) {
>          MachineState *m = MACHINE(qdev_get_machine());
>          MachineClass *mc = MACHINE_GET_CLASS(m);
> -        AccelClass *ac = ACCEL_GET_CLASS(m->accelerator);
>  
> -        if (ac->compat_props) {
> -            object_apply_global_props(obj, ac->compat_props, &error_abort);
> +        if (m->accelerator) {
> +            AccelClass *ac = ACCEL_GET_CLASS(m->accelerator);
> +
> +            if (ac->compat_props) {
> +                object_apply_global_props(obj, ac->compat_props, 
> &error_abort);
> +            }
>          }
>          object_apply_global_props(obj, mc->compat_props, &error_abort);
>      }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]