Hi ----- Original Message ----- > 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".
oops, that was too obvious ;) thanks