[libvirt] [PATCH] libxl: avoid crashing if calling `virsh numatune' on inactive domain
Jim Fehlig
jfehlig at suse.com
Fri Dec 20 18:36:50 UTC 2013
Dario Faggioli wrote:
> by, in libxlDomainGetNumaParameters(), calling libxl_bitmap_init() as soon as
> possible, which avoids getting to 'cleanup:', where libxl_bitmap_dispose()
> happens, without having initialized the nodemap, and hence crashing after some
> invalid free()-s:
>
Yikes! ACK to the fix. I've pushed it.
Regards,
Jim
> # ./daemon/libvirtd -v
> *** Error in `/home/xen/libvirt.git/daemon/.libs/lt-libvirtd': munmap_chunk(): invalid pointer: 0x00007fdd42592666 ***
> ======= Backtrace: =========
> /lib64/libc.so.6(+0x7bbe7)[0x7fdd3f767be7]
> /lib64/libxenlight.so.4.3(libxl_bitmap_dispose+0xd)[0x7fdd2c88c045]
> /home/xen/libvirt.git/daemon/.libs/../../src/.libs/libvirt_driver_libxl.so(+0x12d26)[0x7fdd2caccd26]
> /home/xen/libvirt.git/src/.libs/libvirt.so.0(virDomainGetNumaParameters+0x15c)[0x7fdd4247898c]
> /home/xen/libvirt.git/daemon/.libs/lt-libvirtd(+0x1d9a2)[0x7fdd42ecc9a2]
> /home/xen/libvirt.git/src/.libs/libvirt.so.0(virNetServerProgramDispatch+0x3da)[0x7fdd424e9eaa]
> /home/xen/libvirt.git/src/.libs/libvirt.so.0(+0x1a6f38)[0x7fdd424e3f38]
> /home/xen/libvirt.git/src/.libs/libvirt.so.0(+0xa81e5)[0x7fdd423e51e5]
> /home/xen/libvirt.git/src/.libs/libvirt.so.0(+0xa783e)[0x7fdd423e483e]
> /lib64/libpthread.so.0(+0x7c53)[0x7fdd3febbc53]
> /lib64/libc.so.6(clone+0x6d)[0x7fdd3f7e1dbd]
>
> Signed-off-by: Dario Faggili <dario.faggioli at citrix.com>
> Cc: Jim Fehlig <jfehlig at suse.com>
> Cc: Ian Jackson <Ian.Jackson at eu.citrix.com>
> ---
> src/libxl/libxl_driver.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c
> index 29aa6c7..d91744f 100644
> --- a/src/libxl/libxl_driver.c
> +++ b/src/libxl/libxl_driver.c
> @@ -3958,6 +3958,8 @@ libxlDomainGetNumaParameters(virDomainPtr dom,
> * the filtering on behalf of older clients that can't parse it. */
> flags &= ~VIR_TYPED_PARAM_STRING_OKAY;
>
> + libxl_bitmap_init(&nodemap);
> +
> if (!(vm = libxlDomObjFromDomain(dom)))
> goto cleanup;
>
> @@ -3972,8 +3974,6 @@ libxlDomainGetNumaParameters(virDomainPtr dom,
>
> priv = vm->privateData;
>
> - libxl_bitmap_init(&nodemap);
> -
> if ((*nparams) == 0) {
> *nparams = LIBXL_NUMA_NPARAM;
> ret = 0;
>
>
>
>
More information about the libvir-list
mailing list