2010/11/8 Eric Blake <eblake(a)redhat.com>:
On 11/08/2010 02:31 PM, Matthias Bolte wrote:
> xenHypervisorInit is called from xenRegister and detects the
> sys_interface_version. As Andy figured out correctly, the xencapstest
> calls xenHypervisorMakeCapabilitiesInternal with conn == NULL.
> xenHypervisorMakeCapabilitiesInternal then calls
> xenDaemonNodeGetTopology with conn == NULL if sys_interface_version >=
> SYS_IFACE_MIN_VERS_NUMA holds. This is true when you have Xen
> installed, otherwise sys_interface_version is -1. Therefore this test
> will fail when ypu have recent Xen installed.
>
> diff --git a/src/xen/xen_hypervisor.c b/src/xen/xen_hypervisor.c
> index c5cc880..95b3ca2 100644
> --- a/src/xen/xen_hypervisor.c
> +++ b/src/xen/xen_hypervisor.c
> @@ -2244,8 +2244,7 @@ xenHypervisorBuildCapabilities(virConnectPtr conn,
> "xenmigr") < 0)
> goto no_memory;
>
> -
> - if (sys_interface_version >= SYS_IFACE_MIN_VERS_NUMA) {
> + if (sys_interface_version >= SYS_IFACE_MIN_VERS_NUMA && conn != NULL)
{
> if (xenDaemonNodeGetTopology(conn, caps) != 0) {
> virCapabilitiesFree(caps);
> return NULL;
ACK if you'd like to turn that into a formal commit.
Okay, I basically used the explaining text as a commit message and
pushed the result.
Matthias