From: Zhenzhong Duan <zhenzhong.d...@intel.com> 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.d...@intel.com> Reviewed-by: Eric Auger <eric.au...@redhat.com> Link: https://lore.kernel.org/r/20250116102307.260849-1-zhenzhong.d...@intel.com Signed-off-by: Cédric Le Goater <c...@redhat.com> (cherry picked from commit 7b3d5b84cbd742356a1afc6b0fa489d0663f235d) Signed-off-by: Michael Tokarev <m...@tls.msk.ru> diff --git a/hw/vfio/iommufd.c b/hw/vfio/iommufd.c index e7bece4ea1..a60c899dc6 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; } -- 2.39.5