mirror of
https://github.com/qemu/qemu.git
synced 2026-04-05 22:00:58 +00:00
util/event_notifier: fix error handling for event_notifier_init callers
Check return value of event_notifier_init() and return early on failure instead of continuing with invalid state. - Use ret < 0 to handle negative return value. - No functional changes. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/413 Signed-off-by: Trieu Huynh <vikingtc4@gmail.com> Acked-by: Anthony Krowiak <akrowiak@linux.ibm.com> Reviewed-by: Jagannathan Raman <jag.raman@oracle.com> Reviewed-by: Maciej S. Szmigiero <maciej.szmigiero@oracle.com> # for the Hyper-V part Reviewed-by: Matthew Rosato <mjrosato@linux.ibm.com> Message-ID: <20260318141415.8538-4-vikingtc4@gmail.com> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
This commit is contained in:
committed by
Philippe Mathieu-Daudé
parent
5e69353ff1
commit
8953fd41e6
@@ -439,7 +439,7 @@ HvSintRoute *hyperv_sint_route_new(uint32_t vp_index, uint32_t sint,
|
||||
sint_route->staged_msg->cb_data = cb_data;
|
||||
|
||||
r = event_notifier_init(ack_notifier, false);
|
||||
if (r) {
|
||||
if (r < 0) {
|
||||
goto cleanup_err_sint;
|
||||
}
|
||||
event_notifier_set_handler(ack_notifier, sint_ack_handler);
|
||||
@@ -453,7 +453,7 @@ HvSintRoute *hyperv_sint_route_new(uint32_t vp_index, uint32_t sint,
|
||||
|
||||
/* We need to setup a GSI for this SintRoute */
|
||||
r = event_notifier_init(&sint_route->sint_set_notifier, false);
|
||||
if (r) {
|
||||
if (r < 0) {
|
||||
goto cleanup_err_sint;
|
||||
}
|
||||
|
||||
|
||||
@@ -1432,7 +1432,7 @@ static void open_channel(VMBusChannel *chan)
|
||||
goto put_gpadl;
|
||||
}
|
||||
|
||||
if (event_notifier_init(&chan->notifier, 0)) {
|
||||
if (event_notifier_init(&chan->notifier, 0) < 0) {
|
||||
goto put_gpadl;
|
||||
}
|
||||
|
||||
@@ -2450,7 +2450,7 @@ static void vmbus_realize(BusState *bus, Error **errp)
|
||||
}
|
||||
|
||||
ret = event_notifier_init(&vmbus->notifier, 0);
|
||||
if (ret != 0) {
|
||||
if (ret < 0) {
|
||||
error_setg(errp, "event notifier failed to init with %d", ret);
|
||||
goto remove_msg_handler;
|
||||
}
|
||||
|
||||
@@ -52,9 +52,20 @@ static void setup_irqfd(PCIProxyDev *dev)
|
||||
PCIDevice *pci_dev = PCI_DEVICE(dev);
|
||||
MPQemuMsg msg;
|
||||
Error *local_err = NULL;
|
||||
int ret = 0;
|
||||
|
||||
event_notifier_init(&dev->intr, 0);
|
||||
event_notifier_init(&dev->resample, 0);
|
||||
ret = event_notifier_init(&dev->intr, 0);
|
||||
if (ret < 0) {
|
||||
error_report("Failed to init intr notifier: %s", strerror(-ret));
|
||||
return;
|
||||
}
|
||||
|
||||
ret = event_notifier_init(&dev->resample, 0);
|
||||
if (ret < 0) {
|
||||
error_report("Failed to init resample notifier: %s", strerror(-ret));
|
||||
event_notifier_cleanup(&dev->intr);
|
||||
return;
|
||||
}
|
||||
|
||||
memset(&msg, 0, sizeof(MPQemuMsg));
|
||||
msg.cmd = MPQEMU_CMD_SET_IRQFD;
|
||||
|
||||
@@ -180,7 +180,7 @@ static bool vfio_ap_register_irq_notifier(VFIOAPDevice *vapdev,
|
||||
return false;
|
||||
}
|
||||
|
||||
if (event_notifier_init(notifier, 0)) {
|
||||
if (event_notifier_init(notifier, 0) < 0) {
|
||||
error_setg_errno(errp, errno,
|
||||
"vfio: Unable to init event notifier for irq (%d)",
|
||||
irq);
|
||||
|
||||
@@ -418,7 +418,7 @@ static bool vfio_ccw_register_irq_notifier(VFIOCCWDevice *vcdev,
|
||||
return false;
|
||||
}
|
||||
|
||||
if (event_notifier_init(notifier, 0)) {
|
||||
if (event_notifier_init(notifier, 0) < 0) {
|
||||
error_setg_errno(errp, errno,
|
||||
"vfio: Unable to init event notifier for irq (%d)",
|
||||
irq);
|
||||
|
||||
@@ -318,7 +318,7 @@ static VFIOIOEventFD *vfio_ioeventfd_init(VFIOPCIDevice *vdev,
|
||||
|
||||
ioeventfd = g_malloc0(sizeof(*ioeventfd));
|
||||
|
||||
if (event_notifier_init(&ioeventfd->e, 0)) {
|
||||
if (event_notifier_init(&ioeventfd->e, 0) < 0) {
|
||||
g_free(ioeventfd);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -70,7 +70,7 @@ static bool vfio_notifier_init(VFIOPCIDevice *vdev, EventNotifier *e,
|
||||
}
|
||||
|
||||
ret = event_notifier_init(e, 0);
|
||||
if (ret) {
|
||||
if (ret < 0) {
|
||||
error_setg_errno(errp, -ret, "vfio_notifier_init %s failed", name);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1075,13 +1075,13 @@ static int vhost_vdpa_svq_set_fds(struct vhost_dev *dev,
|
||||
int r;
|
||||
|
||||
r = event_notifier_init(&svq->hdev_kick, 0);
|
||||
if (r != 0) {
|
||||
if (r < 0) {
|
||||
error_setg_errno(errp, -r, "Couldn't create kick event notifier");
|
||||
goto err_init_hdev_kick;
|
||||
}
|
||||
|
||||
r = event_notifier_init(&svq->hdev_call, 0);
|
||||
if (r != 0) {
|
||||
if (r < 0) {
|
||||
error_setg_errno(errp, -r, "Couldn't create call event notifier");
|
||||
goto err_init_hdev_call;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user