On 9/16/26 4:32 PM, Eric Farman wrote:
Registering a new IRQ notifier will allocate an error object if needed, and warn_report_err() will release that memory once it's finished. The pointer remains, however, so subsequent errors after the non-fatal errors in vfio_ap_realize() would cause an assertion failure for a non-NULL pointer. Fix this by clearing the pointer once the warning has been reported, to reset the state of the error objects. Cc: Anthony Krowiak <[email protected]> Cc: [email protected] Fixes: 1360b2ad1f ("s390x/ap: Wire up the device request notifier interface") Fixes: 0fb8a62fe4 ("hw/vfio/ap: notification handler for AP config changed event") Signed-off-by: Eric Farman <[email protected]>
Reviewed-by: Anthony Krowiak <[email protected]>
--- hw/vfio/ap.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hw/vfio/ap.c b/hw/vfio/ap.c index 6e2a1223ea..2926e04ad4 100644 --- a/hw/vfio/ap.c +++ b/hw/vfio/ap.c @@ -247,8 +247,10 @@ static void vfio_ap_realize(DeviceState *dev, Error **errp) /* * Report this error, but do not make it a failing condition. * Lack of this IRQ in the host does not prevent normal operation. + * Clear the pointer, since the warning will release it. */ warn_report_err(err); + err = NULL; }if (!vfio_ap_register_irq_notifier(vapdev, VFIO_AP_CFG_CHG_IRQ_INDEX, &err))@@ -256,8 +258,10 @@ static void vfio_ap_realize(DeviceState *dev, Error **errp) /* * Report this error, but do not make it a failing condition. * Lack of this IRQ in the host does not prevent normal operation. + * Clear the pointer, since the warning will release it. */ warn_report_err(err); + err = NULL; }return;
