[libvirt] [PATCH 2/4] cpu: push more parsing logic into common code
Jiri Denemark
jdenemar at redhat.com
Tue Aug 14 11:46:50 UTC 2018
On Mon, Aug 13, 2018 at 18:27:06 -0400, John Ferlan wrote:
>
>
> On 08/01/2018 01:02 PM, Daniel P. Berrangé wrote:
> > The x86 and ppc impls both duplicate some logic when parsing CPU
> > features. Change the callback signature so that this duplication can be
> > pushed up a level to common code.
> >
> > Signed-off-by: Daniel P. Berrangé <berrange at redhat.com>
> > ---
> > src/cpu/cpu_map.c | 106 +++++++++++++++---------
> > src/cpu/cpu_map.h | 22 ++---
> > src/cpu/cpu_ppc64.c | 112 ++++++-------------------
> > src/cpu/cpu_x86.c | 196 +++++++++++++-------------------------------
> > 4 files changed, 155 insertions(+), 281 deletions(-)
...
> > +static int
> > x86ModelParse(xmlXPathContextPtr ctxt,
> > - virCPUx86MapPtr map)
> > + const char *name,
> > + void *data)
> > {
>
> [...]
>
> >
> > + if (VIR_APPEND_ELEMENT(map->models, map->nmodels, model) < 0)
> > + goto error;
>
> Similar regarding cleanup/error; however, ...
>
> > +
> > + ret = 0;
> > +
> > cleanup:
>
> I ran the changes through Coverity and it complains here because one can
> goto cleanup if the signature code fails, return -1, but the @model
> wouldn't be free'd.
>
> Prior to this change it seems failing in that code wasn't necessarily an
> error, but it would generate the error, not go through the vendor and
> feature processing, and return a somewhat empty @model. Perhaps a bug in
> existing code, but uncovered in this refactoring.
Hmm, the gotos in the signature code should be jumping to the error
label. I guess the best fix would be a separate patch removing the error
label completely.
Jirka
More information about the libvir-list
mailing list