qemu/hw/core
Akihiko Odaki 937874a83d hw/qdev: Check machine_hotplug_handler in hotplug_unplug_allowed_common
Commit 03fcbd9dc5 ("qdev: Check for the availability of a hotplug
controller before adding a device") says:

 > The qdev_unplug() function contains a g_assert(hotplug_ctrl)
 > statement, so QEMU crashes when the user tries to device_add +
 > device_del a device that does not have a corresponding hotplug
 > controller.

 > The code in qdev_device_add() already checks whether the bus has a
 > proper hotplug controller, but for devices that do not have a
 > corresponding bus, here is no appropriate check available yet. In that
 > case we should check whether the machine itself provides a suitable
 > hotplug controller and refuse to plug the device if none is available.

However, it forgot to add the corresponding check to qdev_unplug().

Check the machine hotplug handler once in the common
qdev_hotplug_unplug_allowed_common() helper so both hotplug
and hot-unplug path are covered.

Fixes: 7716b8ca74 ("qdev: HotplugHandler: Add support for unplugging BUS-less devices")
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
[PMD: Split from bigger patch, part 6/6]
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Message-Id: <20250110091908.64454-7-philmd@linaro.org>
2025-01-13 17:16:03 +01:00
..
bus.c hw/core: Remove transitional infrastructure from BusClass 2024-02-02 13:51:57 +00:00
clock-vmstate.c hw/core: Constify VMState 2023-12-29 11:17:30 +11:00
clock.c include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
cpu-common.c include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
cpu-system.c include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
eif.c hw/core/eif: Use stateful qcrypto apis 2024-12-13 15:26:58 +01:00
eif.h hw/core: Add Enclave Image Format (EIF) related helpers 2024-10-31 18:28:32 +01:00
fw-path-provider.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
generic-loader.c Accel & Exec patch queue 2024-12-21 11:07:00 -05:00
gpio.c qdev: Use machine_get_container() 2025-01-09 18:16:24 +01:00
guest-loader.c Accel & Exec patch queue 2024-12-21 11:07:00 -05:00
guest-loader.h hw/core: implement a guest-loader to support static hypervisor guests 2021-03-10 15:34:11 +00:00
hotplug.c call HotplugHandler->plug() as the last step in device realization 2018-10-19 13:44:12 +02:00
irq.c hw: fix memory leak in IRQState allocation 2024-10-01 13:55:39 +01:00
Kconfig hw/core: Add Enclave Image Format (EIF) related helpers 2024-10-31 18:28:32 +01:00
loader-fit.c include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
loader.c hw/core/loader: Use ssize_t for efi zboot unpacker 2025-01-09 14:12:24 +08:00
machine-hmp-cmds.c include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
machine-qmp-cmds.c include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
machine-smp.c hw/core/machine-smp: Fix error message parameter 2024-11-19 18:38:25 +01:00
machine.c target/arm: change default pauth algorithm to impdef 2025-01-13 12:35:34 +00:00
meson.build qdev: Implement qdev_create_fake_machine() for user emulation 2025-01-09 18:16:24 +01:00
nmi.c hw/core: Improve error message when machine doesn't provide NMIs 2023-02-23 14:10:17 +01:00
null-machine.c Do not include sysemu/sysemu.h if it's not really necessary 2021-05-02 17:24:50 +02:00
numa.c include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
or-irq.c include/hw/qdev-properties: Remove DEFINE_PROP_END_OF_LIST 2024-12-19 19:36:37 +01:00
platform-bus.c include/hw/qdev-properties: Remove DEFINE_PROP_END_OF_LIST 2024-12-19 19:36:37 +01:00
ptimer.c include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
qdev-clock.c clock: inline most of qdev_init_clocklist 2024-12-10 18:49:24 +01:00
qdev-fw.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
qdev-hotplug.c hw/qdev: Check machine_hotplug_handler in hotplug_unplug_allowed_common 2025-01-13 17:16:03 +01:00
qdev-prop-internal.h qdev: Make qdev_propinfo_get_uint16() static 2020-12-15 10:02:07 -05:00
qdev-properties-system.c Accel & Exec patch queue 2024-12-21 11:07:00 -05:00
qdev-properties.c Constify all opaque Property pointers 2024-12-19 19:36:37 +01:00
qdev-user.c qdev: Implement qdev_create_fake_machine() for user emulation 2025-01-09 18:16:24 +01:00
qdev.c qdev: Use machine_get_container() 2025-01-09 18:16:24 +01:00
register.c hw/core/register: Add more 64-bit utilities 2021-09-01 11:59:12 +10:00
reset.c include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
resetcontainer.c hw/core: Add ResetContainer which holds objects implementing Resettable 2024-02-27 13:01:42 +00:00
resettable.c hw/core/resettable: Remove transitional_function machinery 2024-09-13 15:31:46 +01:00
split-irq.c include/hw/qdev-properties: Remove DEFINE_PROP_END_OF_LIST 2024-12-19 19:36:37 +01:00
stream.c hw/core/stream: Rename StreamSlave as StreamSink 2020-12-10 12:15:04 -05:00
sysbus-fdt.c include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
sysbus.c qdev: Use machine_get_container() 2025-01-09 18:16:24 +01:00
trace-events trace-events: remove the remaining vcpu trace events 2023-06-01 11:05:05 -04:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
uboot_image.h license: Update deprecated SPDX tag GPL-2.0+ to GPL-2.0-or-later 2024-09-20 10:11:59 +03:00
vm-change-state-handler.c include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
vmstate-if.c vmstate: add qom interface to get id 2020-01-06 18:41:32 +04:00