qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH] isapc: Fix segfault during initialization


From: Andreas Färber
Subject: Re: [Qemu-devel] [PATCH] isapc: Fix segfault during initialization
Date: Sat, 14 Jan 2012 15:37:05 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:9.0) Gecko/20111220 Thunderbird/9.0

Am 14.01.2012 14:12, schrieb Jan Kiszka:
> From: Jan Kiszka <address@hidden>
> 
> Linking the RTC device state to the PIIX does not belong into the
> common path that is shared with the isapc. QEMU crashes otherwise.

Doesn't that indicate a missing NULL-check or something in
qdev_property_add_child() that should be fixed, too?

Andreas

> 
> Signed-off-by: Jan Kiszka <address@hidden>
> ---
>  hw/pc_piix.c |   22 +++++++++++-----------
>  1 files changed, 11 insertions(+), 11 deletions(-)
> 
> diff --git a/hw/pc_piix.c b/hw/pc_piix.c
> index b70431f..3aea3cc 100644
> --- a/hw/pc_piix.c
> +++ b/hw/pc_piix.c
> @@ -201,6 +201,17 @@ static void pc_init1(MemoryRegion *system_memory,
>          }
>          idebus[0] = qdev_get_child_bus(&dev->qdev, "ide.0");
>          idebus[1] = qdev_get_child_bus(&dev->qdev, "ide.1");
> +
> +        /* FIXME there's some major spaghetti here.  Somehow we create the
> +         * devices on the PIIX before we actually create it.  We create the
> +         * PIIX3 deep in the recess of the i440fx creation too and then lose
> +         * the DeviceState.
> +         *
> +         * For now, let's "fix" this by making judicious use of paths.  This
> +         * is not generally the right way to do this.
> +         */
> +        qdev_property_add_child(qdev_resolve_path("/i440fx/piix3", NULL),
> +                                "rtc", (DeviceState *)rtc_state, NULL);
>      } else {
>          for(i = 0; i < MAX_IDE_BUS; i++) {
>              ISADevice *dev;
> @@ -211,17 +222,6 @@ static void pc_init1(MemoryRegion *system_memory,
>          }
>      }
>  
> -    /* FIXME there's some major spaghetti here.  Somehow we create the 
> devices
> -     * on the PIIX before we actually create it.  We create the PIIX3 deep in
> -     * the recess of the i440fx creation too and then lose the DeviceState.
> -     *
> -     * For now, let's "fix" this by making judicious use of paths.  This is 
> not
> -     * generally the right way to do this.
> -     */
> -
> -    qdev_property_add_child(qdev_resolve_path("/i440fx/piix3", NULL),
> -                            "rtc", (DeviceState *)rtc_state, NULL);
> -
>      audio_init(isa_bus, pci_enabled ? pci_bus : NULL);
>  
>      pc_cmos_init(below_4g_mem_size, above_4g_mem_size, boot_device,

-- 
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg



reply via email to

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