On 9/3/19 5:36 PM, Peter Maydell wrote:
> From: Philippe Mathieu-Daudé <philmd@redhat.com>
>
> Both object_initialize() and qdev_set_parent_bus() increase the
> reference counter of the new object, so one of the references has
> to be dropped afterwards to get the reference counting right.
> In machine model code this refcount leak is not particularly
> problematic because (unlike devices) machines will never be
> created on demand via QMP, and they are never destroyed.
> But in any case let's use the new sysbus_init_child_obj() instead
> to get the reference counting here right.
>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
> Message-id: 20190823143249.8096-4-philmd@redhat.com
> [PMM: rewrote commit message]
Thank you very much Peter!
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> ---
> hw/arm/exynos4_boards.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/hw/arm/exynos4_boards.c b/hw/arm/exynos4_boards.c
> index f69358a5ba8..2781d8bd419 100644
> --- a/hw/arm/exynos4_boards.c
> +++ b/hw/arm/exynos4_boards.c
> @@ -131,8 +131,8 @@ exynos4_boards_init_common(MachineState *machine,
> exynos4_boards_init_ram(s, get_system_memory(),
> exynos4_board_ram_size[board_type]);
>
> - object_initialize(&s->soc, sizeof(s->soc), TYPE_EXYNOS4210_SOC);
> - qdev_set_parent_bus(DEVICE(&s->soc), sysbus_get_default());
> + sysbus_init_child_obj(OBJECT(machine), "soc",
> + &s->soc, sizeof(s->soc), TYPE_EXYNOS4210_SOC);
> object_property_set_bool(OBJECT(&s->soc), true, "realized",
> &error_fatal);