[PATCH] hw: Fix crash that happens when introspecting scsi-block on older machine types

Thomas Huth posted 1 patch 5 months, 4 weeks ago
hw/core/machine.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
[PATCH] hw: Fix crash that happens when introspecting scsi-block on older machine types
Posted by Thomas Huth 5 months, 4 weeks ago
"make check SPEED=slow" is currently failing the device-introspect-test on
older machine types since introspecting "scsi-block" is causing an abort:

 $ ./qemu-system-x86_64 -M pc-q35-8.0 -monitor stdio
 QEMU 9.0.50 monitor - type 'help' for more information
 (qemu) device_add scsi-block,help
 Unexpected error in object_property_find_err() at
 ../../devel/qemu/qom/object.c:1357:
 can't apply global scsi-disk-base.migrate-emulated-scsi-request=false:
 Property 'scsi-block.migrate-emulated-scsi-request' not found
 Aborted (core dumped)

The problem is that the compat code tries to change the
"migrate-emulated-scsi-request" property for all devices that are
derived from "scsi-block", but the property has only been added
to "scsi-hd" and "scsi-cd" via the DEFINE_SCSI_DISK_PROPERTIES macro.

Thus let's fix the problem by only changing the property on the devices
that really have this property.

Fixes: b4912afa5f ("scsi-disk: Fix crash for VM configured with USB CDROM after live migration")
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 hw/core/machine.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/hw/core/machine.c b/hw/core/machine.c
index 655d75c21f..60858a8565 100644
--- a/hw/core/machine.c
+++ b/hw/core/machine.c
@@ -36,7 +36,8 @@
 
 GlobalProperty hw_compat_9_0[] = {
     {"arm-cpu", "backcompat-cntfrq", "true" },
-    {"scsi-disk-base", "migrate-emulated-scsi-request", "false" },
+    {"scsi-hd", "migrate-emulated-scsi-request", "false" },
+    {"scsi-cd", "migrate-emulated-scsi-request", "false" },
     {"vfio-pci", "skip-vsc-check", "false" },
 };
 const size_t hw_compat_9_0_len = G_N_ELEMENTS(hw_compat_9_0);
-- 
2.45.2
Re: [PATCH] hw: Fix crash that happens when introspecting scsi-block on older machine types
Posted by Yong Huang 5 months, 4 weeks ago
On Wed, Jul 3, 2024 at 5:09 PM Thomas Huth <thuth@redhat.com> wrote:

> "make check SPEED=slow" is currently failing the device-introspect-test on
> older machine types since introspecting "scsi-block" is causing an abort:
>
>  $ ./qemu-system-x86_64 -M pc-q35-8.0 -monitor stdio
>  QEMU 9.0.50 monitor - type 'help' for more information
>  (qemu) device_add scsi-block,help
>  Unexpected error in object_property_find_err() at
>  ../../devel/qemu/qom/object.c:1357:
>  can't apply global scsi-disk-base.migrate-emulated-scsi-request=false:
>  Property 'scsi-block.migrate-emulated-scsi-request' not found
>  Aborted (core dumped)
>
> The problem is that the compat code tries to change the
> "migrate-emulated-scsi-request" property for all devices that are
> derived from "scsi-block", but the property has only been added
> to "scsi-hd" and "scsi-cd" via the DEFINE_SCSI_DISK_PROPERTIES macro.
>
> Thus let's fix the problem by only changing the property on the devices
> that really have this property.
>

Thanks for the fix.


> Fixes: b4912afa5f ("scsi-disk: Fix crash for VM configured with USB CDROM
> after live migration")
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
>  hw/core/machine.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/hw/core/machine.c b/hw/core/machine.c
> index 655d75c21f..60858a8565 100644
> --- a/hw/core/machine.c
> +++ b/hw/core/machine.c
> @@ -36,7 +36,8 @@
>
>  GlobalProperty hw_compat_9_0[] = {
>      {"arm-cpu", "backcompat-cntfrq", "true" },
> -    {"scsi-disk-base", "migrate-emulated-scsi-request", "false" },
> +    {"scsi-hd", "migrate-emulated-scsi-request", "false" },
> +    {"scsi-cd", "migrate-emulated-scsi-request", "false" },
>      {"vfio-pci", "skip-vsc-check", "false" },
>  };
>  const size_t hw_compat_9_0_len = G_N_ELEMENTS(hw_compat_9_0);
> --
> 2.45.2
>
Acked-by: Hyman Huang <yong.huang@smartx.com>

-- 
Best regards
Re: [PATCH] hw: Fix crash that happens when introspecting scsi-block on older machine types
Posted by Philippe Mathieu-Daudé 5 months, 4 weeks ago
On 3/7/24 11:09, Thomas Huth wrote:
> "make check SPEED=slow" is currently failing the device-introspect-test on
> older machine types since introspecting "scsi-block" is causing an abort:
> 
>   $ ./qemu-system-x86_64 -M pc-q35-8.0 -monitor stdio
>   QEMU 9.0.50 monitor - type 'help' for more information
>   (qemu) device_add scsi-block,help
>   Unexpected error in object_property_find_err() at
>   ../../devel/qemu/qom/object.c:1357:
>   can't apply global scsi-disk-base.migrate-emulated-scsi-request=false:
>   Property 'scsi-block.migrate-emulated-scsi-request' not found
>   Aborted (core dumped)
> 
> The problem is that the compat code tries to change the
> "migrate-emulated-scsi-request" property for all devices that are
> derived from "scsi-block", but the property has only been added
> to "scsi-hd" and "scsi-cd" via the DEFINE_SCSI_DISK_PROPERTIES macro.
> 
> Thus let's fix the problem by only changing the property on the devices
> that really have this property.
> 
> Fixes: b4912afa5f ("scsi-disk: Fix crash for VM configured with USB CDROM after live migration")

(FTR this commit was not reviewed).

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>

> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
>   hw/core/machine.c | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)