From: Peter Xu Date: Tue, 29 Oct 2024 21:16:04 +0000 (-0400) Subject: qdev: Make qdev_get_machine() not use container_get() X-Git-Tag: v10.0.0-rc0~94^2~7 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=63450f322bf76faab7add3def89815d9198492dc;p=thirdparty%2Fqemu.git qdev: Make qdev_get_machine() not use container_get() Currently, qdev_get_machine() has a slight misuse on container_get(), as the helper says "get a container" but in reality the goal is to get the machine object. It is still a "container" but not strictly. Note that it _may_ get a container (at "/machine") in our current unit test of test-qdev-global-props.c before all these changes, but it's probably unexpected and worked by accident. Switch to an explicit object_resolve_path_component(), with a side benefit that qdev_get_machine() can happen a lot, and we don't need to split the string ("/machine") every time. This also paves way for making the helper container_get() never try to return a non-container at all. Signed-off-by: Peter Xu Reviewed-by: Philippe Mathieu-Daudé Message-ID: <20241121192202.4155849-9-peterx@redhat.com> Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Richard Henderson --- diff --git a/hw/core/qdev.c b/hw/core/qdev.c index 09c4489e3c..48bc9a7b9c 100644 --- a/hw/core/qdev.c +++ b/hw/core/qdev.c @@ -817,7 +817,12 @@ Object *qdev_get_machine(void) static Object *dev; if (dev == NULL) { - dev = container_get(object_get_root(), "/machine"); + dev = object_resolve_path_component(object_get_root(), "machine"); + /* + * Any call to this function before machine is created is treated + * as a programming error as of now. + */ + assert(dev); } return dev;