Marc-André Lureau <mlur...@redhat.com> writes: > Hi > > ----- Original Message ----- >> marcandre.lur...@redhat.com writes: >> >> > From: Marc-André Lureau <marcandre.lur...@redhat.com> >> > >> > Call ivshmem_setup_interrupts() with or without MSI, always allocate >> > msi_vectors that is going to be used in all case in the following patch. >> > >> > Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> >> > --- >> > hw/misc/ivshmem.c | 26 ++++++++++++++++---------- >> > 1 file changed, 16 insertions(+), 10 deletions(-) >> > >> > diff --git a/hw/misc/ivshmem.c b/hw/misc/ivshmem.c >> > index 5029789..c601a8a 100644 >> > --- a/hw/misc/ivshmem.c >> > +++ b/hw/misc/ivshmem.c >> > @@ -769,18 +769,25 @@ static void ivshmem_reset(DeviceState *d) >> > ivshmem_use_msix(s); >> > } >> > >> > -static int ivshmem_setup_msi(IVShmemState * s) >> > +static int ivshmem_setup_interrupts(IVShmemState *s) >> > { >> > - if (msix_init_exclusive_bar(PCI_DEVICE(s), s->vectors, 1)) { >> > - return -1; >> > + /* allocate QEMU callback data for receiving interrupts */ >> > + if (s->vectors > 0) { >> > + s->msi_vectors = g_malloc0(s->vectors * sizeof(MSIVector)); >> > + if (!s->msi_vectors) { >> >> Can't happen; s->vectors * sizeof(MSIVector) != 0. > > It can't happen on allocation failure?
Nope. Compare g_malloc0() and g_try_malloc0() at https://developer.gnome.org/glib/stable/glib-Memory-Allocation.html We generally use the "try" variants only for memory allocations that can execute during operation and can be "big".