[libvirt PATCH] qemu_firmware: don't error out for unknown firmware features
Pavel Hrdina
phrdina at redhat.com
Mon May 10 14:00:23 UTC 2021
On Mon, May 10, 2021 at 03:24:39PM +0200, Peter Krempa wrote:
> On Mon, May 10, 2021 at 15:16:11 +0200, Pavel Hrdina wrote:
> > When QEMU introduces new firmware features libvirt will fail until we
> > list that feature in our code as well which doesn't sound right.
> >
> > We should simply ignore the new feature until we add a proper support
> > for it.
> >
> > Reported-by: Laszlo Ersek <lersek at redhat.com>
> > Signed-off-by: Pavel Hrdina <phrdina at redhat.com>
> > ---
> > src/qemu/qemu_firmware.c | 12 ++++++------
> > 1 file changed, 6 insertions(+), 6 deletions(-)
> >
> > diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c
> > index 94e88ebe4b..e37a7edefa 100644
> > --- a/src/qemu/qemu_firmware.c
> > +++ b/src/qemu/qemu_firmware.c
> > @@ -567,6 +567,7 @@ qemuFirmwareFeatureParse(const char *path,
> > virJSONValue *featuresJSON;
> > g_autoptr(qemuFirmwareFeature) features = NULL;
>
> Not related to this patch, but a bug nevertheless. 'features' is an
> array allocated by:
>
> features = g_new0(qemuFirmwareFeature, nfeatures);
>
> Using g_autoptr calls the proper destructor function only for the first
> element!
I don't think this is true. For qemuFirmwareFeature the auto-cleanup is
defined using:
static void
qemuFirmwareFeatureFree(qemuFirmwareFeature *features)
{
g_free(features);
}
G_DEFINE_AUTOPTR_CLEANUP_FUNC(qemuFirmwareFeature, qemuFirmwareFeatureFree);
So it actually frees the whole array.
> The whole premise of declaring an autoptr function for an enum type
> seems a bit flawed to me!
Agreed, seems a bit overkill and simple
g_autofree qemuFirmwareFeature *features;
should be good enough.
Pavel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20210510/3a0ebcd2/attachment-0001.sig>
More information about the libvir-list
mailing list