[libvirt] [PATCH] xenFormatXLDomainDisks: avoid double free on OOM testing
Jim Fehlig
jfehlig at suse.com
Thu Apr 13 17:13:51 UTC 2017
Wim Ten Have wrote:
> From: Wim ten Have <wim.ten.have at oracle.com>
>
> Fix xlconfigtest runs build for --enable-test-oom on
> Xen XL-2-XML Parse new-disk
>
> #0 0x00007ffff3bd791f in raise () from /lib64/libc.so.6
> #1 0x00007ffff3bd951a in abort () from /lib64/libc.so.6
> #2 0x00007ffff3c1b200 in __libc_message () from /lib64/libc.so.6
> #3 0x00007ffff3c2488a in _int_free () from /lib64/libc.so.6
> #4 0x00007ffff3c282bc in free () from /lib64/libc.so.6
> #5 0x00007ffff7864fcb in virFree (ptrptr=ptrptr at entry=0x7fffffffd868) at util/viralloc.c:582
> #6 0x00007ffff78776e5 in virConfFreeValue (val=<optimized out>) at util/virconf.c:178
> ==> #7 0x0000000000425759 in xenFormatXLDomainDisks (def=0x7fffffffd8c0, def=0x7fffffffd8c0, conf=0x658220)
> at xenconfig/xen_xl.c:1159
> #8 xenFormatXL (def=def at entry=0x66ec20, conn=conn at entry=0x668cf0) at xenconfig/xen_xl.c:1558
> #9 0x000000000040ea1d in testCompareParseXML (replaceVars=<optimized out>,
> xml=0x65f5e0 "/home/wtenhave/WORK/libvirt/history/libvirt/tests/xlconfigdata/test-fullvirt-ovmf.xml",
> xlcfg=0x65f6b0 "/home/wtenhave/WORK/libvirt/history/libvirt/tests/xlconfigdata/test-fullvirt-ovmf.cfg")
> at xlconfigtest.c:105
> #10 testCompareHelper (data=<optimized out>) at xlconfigtest.c:205
> #11 0x000000000041079a in virTestRun (title=title at entry=0x431cf0 "Xen XL-2-XML Parse fullvirt-ovmf",
> body=body at entry=0x40e720 <testCompareHelper>, data=data at entry=0x7fffffffda50) at testutils.c:247
> #12 0x000000000040ebc2 in mymain () at xlconfigtest.c:256
> #13 0x0000000000411070 in virTestMain (argc=1, argv=0x7fffffffdc08, func=0x40f2c0 <mymain>) at testutils.c:992
> #14 0x00007ffff3bc2401 in __libc_start_main () from /lib64/libc.so.6
> #15 0x000000000040e5da in _start ()
>
> symmetry seems missing its sibbling coded functionality
> demonstrated under functions;
> xenFormatXLUSBController()
> xenFormatXLUSB()
> xenFormatXLDomainChannels()
> xenFormatXMDisks
Right. This code should follow the pattern used in similar functions. ACK and
pushed. Thanks for your contributions!
Regards,
Jim
>
> Signed-off-by: Wim ten Have <wim.ten.have at oracle.com>
> ---
> src/xenconfig/xen_xl.c | 15 +++++++++------
> 1 file changed, 9 insertions(+), 6 deletions(-)
>
> diff --git a/src/xenconfig/xen_xl.c b/src/xenconfig/xen_xl.c
> index 74f68b3..43ecf41 100644
> --- a/src/xenconfig/xen_xl.c
> +++ b/src/xenconfig/xen_xl.c
> @@ -1132,7 +1132,6 @@ xenFormatXLDisk(virConfValuePtr list, virDomainDiskDefPtr disk)
> static int
> xenFormatXLDomainDisks(virConfPtr conf, virDomainDefPtr def)
> {
> - int ret = -1;
> virConfValuePtr diskVal;
> size_t i;
>
> @@ -1150,15 +1149,19 @@ xenFormatXLDomainDisks(virConfPtr conf, virDomainDefPtr def)
> goto cleanup;
> }
>
> - if (diskVal->list != NULL)
> - if (virConfSetValue(conf, "disk", diskVal) == 0)
> - diskVal = NULL;
> + if (diskVal->list != NULL) {
> + int ret = virConfSetValue(conf, "disk", diskVal);
> + diskVal = NULL;
> + if (ret < 0)
> + return -1;
> + }
> + VIR_FREE(diskVal);
>
> - ret = 0;
> + return 0;
>
> cleanup:
> virConfFreeValue(diskVal);
> - return ret;
> + return -1;
> }
>
>
More information about the libvir-list
mailing list