diff options
| author | Zhenzhong Duan <zhenzhong.duan@intel.com> | 2025-01-16 18:23:07 +0800 |
|---|---|---|
| committer | Cédric Le Goater <clg@redhat.com> | 2025-02-11 14:15:19 +0100 |
| commit | 7b3d5b84cbd742356a1afc6b0fa489d0663f235d (patch) | |
| tree | 4296584bc69d9a89e26239e60eee7e2f3e474b25 | |
| parent | e45891e0b17884b7170c441eab3a5cdd856946f7 (diff) | |
| download | qemu-7b3d5b84cbd742356a1afc6b0fa489d0663f235d.zip qemu-7b3d5b84cbd742356a1afc6b0fa489d0663f235d.tar.gz qemu-7b3d5b84cbd742356a1afc6b0fa489d0663f235d.tar.bz2 | |
vfio/iommufd: Fix SIGSEV in iommufd_cdev_attach()
When iommufd_cdev_ram_block_discard_disable() fails for whatever reason,
errp should be set or else SIGSEV is triggered in vfio_realize() when
error_prepend() is called.
By this chance, use the same error message for both legacy and iommufd
backend.
Fixes: 5ee3dc7af785 ("vfio/iommufd: Implement the iommufd backend")
Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
Link: https://lore.kernel.org/r/20250116102307.260849-1-zhenzhong.duan@intel.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>
| -rw-r--r-- | hw/vfio/iommufd.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/hw/vfio/iommufd.c b/hw/vfio/iommufd.c index 3490a8f..df61edf 100644 --- a/hw/vfio/iommufd.c +++ b/hw/vfio/iommufd.c @@ -515,8 +515,8 @@ static bool iommufd_cdev_attach(const char *name, VFIODevice *vbasedev, } else { ret = iommufd_cdev_ram_block_discard_disable(true); if (ret) { - error_setg(errp, - "Cannot set discarding of RAM broken (%d)", ret); + error_setg_errno(errp, -ret, + "Cannot set discarding of RAM broken"); goto err_discard_disable; } goto found_container; @@ -544,6 +544,7 @@ static bool iommufd_cdev_attach(const char *name, VFIODevice *vbasedev, ret = iommufd_cdev_ram_block_discard_disable(true); if (ret) { + error_setg_errno(errp, -ret, "Cannot set discarding of RAM broken"); goto err_discard_disable; } |
