forked from pool/libvirt
- Fix memory corruption in legacy Xen driver
0e671a16-CVE-2013-4239.patch bnc#834598 - Upstream patches to fix dumpxml in legacy Xen driver 9d0557b9-legacy-xen-double-free.patch, d7a45bf2-legacy-xen-dumpxml.patch OBS-URL: https://build.opensuse.org/package/show/Virtualization/libvirt?expand=0&rev=294
This commit is contained in:
parent
10c35258ed
commit
0a26adabe1
60
0e671a16-CVE-2013-4239.patch
Normal file
60
0e671a16-CVE-2013-4239.patch
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
commit 0e671a1646df543eab683b38f6644f70d12fbee1
|
||||||
|
Author: Jim Fehlig <jfehlig@suse.com>
|
||||||
|
Date: Mon Aug 5 10:27:23 2013 -0600
|
||||||
|
|
||||||
|
xen: fix memory corruption in legacy driver
|
||||||
|
|
||||||
|
Commit 632180d1 introduced memory corruption in xenDaemonListDefinedDomains
|
||||||
|
by starting to populate the names array at index -1, causing all sorts
|
||||||
|
of havoc in libvirtd such as aborts like the following
|
||||||
|
|
||||||
|
*** Error in `/usr/sbin/libvirtd': double free or corruption (out): 0x00007fffe00ccf20 ***
|
||||||
|
======= Backtrace: =========
|
||||||
|
/lib64/libc.so.6(+0x7abf6)[0x7ffff3fa0bf6]
|
||||||
|
/lib64/libc.so.6(+0x7b973)[0x7ffff3fa1973]
|
||||||
|
/lib64/libc.so.6(xdr_array+0xde)[0x7ffff403cbae]
|
||||||
|
/usr/sbin/libvirtd(+0x50251)[0x5555555a4251]
|
||||||
|
/lib64/libc.so.6(xdr_free+0x15)[0x7ffff403ccd5]
|
||||||
|
/usr/lib64/libvirt.so.0(+0x1fad34)[0x7ffff76b1d34]
|
||||||
|
/usr/lib64/libvirt.so.0(virNetServerProgramDispatch+0x1fc)[0x7ffff76b16f1]
|
||||||
|
/usr/lib64/libvirt.so.0(+0x1f214a)[0x7ffff76a914a]
|
||||||
|
/usr/lib64/libvirt.so.0(+0x1f222d)[0x7ffff76a922d]
|
||||||
|
/usr/lib64/libvirt.so.0(+0xbcc4f)[0x7ffff7573c4f]
|
||||||
|
/usr/lib64/libvirt.so.0(+0xbc5e5)[0x7ffff75735e5]
|
||||||
|
/lib64/libpthread.so.0(+0x7e0f)[0x7ffff48f7e0f]
|
||||||
|
/lib64/libc.so.6(clone+0x6d)[0x7ffff400e7dd]
|
||||||
|
|
||||||
|
Fix by initializing ret to 0 and only setting to error on failure path.
|
||||||
|
|
||||||
|
Index: libvirt-1.1.1/src/xen/xend_internal.c
|
||||||
|
===================================================================
|
||||||
|
--- libvirt-1.1.1.orig/src/xen/xend_internal.c
|
||||||
|
+++ libvirt-1.1.1/src/xen/xend_internal.c
|
||||||
|
@@ -2896,7 +2896,7 @@ xenDaemonListDefinedDomains(virConnectPt
|
||||||
|
{
|
||||||
|
struct sexpr *root = NULL;
|
||||||
|
size_t i;
|
||||||
|
- int ret = -1;
|
||||||
|
+ int ret = 0;
|
||||||
|
struct sexpr *_for_i, *node;
|
||||||
|
|
||||||
|
if (maxnames == 0)
|
||||||
|
@@ -2919,16 +2919,15 @@ xenDaemonListDefinedDomains(virConnectPt
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
- ret = 0;
|
||||||
|
-
|
||||||
|
cleanup:
|
||||||
|
sexpr_free(root);
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
error:
|
||||||
|
- for (i = 0; ret != -1 && i < ret; ++i)
|
||||||
|
+ for (i = 0; i < ret; ++i)
|
||||||
|
VIR_FREE(names[i]);
|
||||||
|
|
||||||
|
+ ret = -1;
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
24
9d0557b9-legacy-xen-double-free.patch
Normal file
24
9d0557b9-legacy-xen-double-free.patch
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
commit 9d0557b9655fe4a3f31af2e1cc2f33de8acfaa7d
|
||||||
|
Author: Stefan Bader <stefan.bader@canonical.com>
|
||||||
|
Date: Wed Jul 31 11:59:21 2013 +0200
|
||||||
|
|
||||||
|
xen: Avoid double free of virDomainDef in xenDaemonCreateXML
|
||||||
|
|
||||||
|
The virDomainDef is allocated by the caller and also used after
|
||||||
|
calling to xenDaemonCreateXML. So it must not get freed by the
|
||||||
|
callee.
|
||||||
|
|
||||||
|
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
|
||||||
|
|
||||||
|
Index: libvirt-1.1.1/src/xen/xend_internal.c
|
||||||
|
===================================================================
|
||||||
|
--- libvirt-1.1.1.orig/src/xen/xend_internal.c
|
||||||
|
+++ libvirt-1.1.1/src/xen/xend_internal.c
|
||||||
|
@@ -2171,7 +2171,6 @@ xenDaemonCreateXML(virConnectPtr conn, v
|
||||||
|
if (xenDaemonDomainResume(conn, def) < 0)
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
- virDomainDefFree(def);
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
error:
|
238
d7a45bf2-legacy-xen-dumpxml.patch
Normal file
238
d7a45bf2-legacy-xen-dumpxml.patch
Normal file
@ -0,0 +1,238 @@
|
|||||||
|
commit d7a45bf22368161869963b92a0a1d5599590fdf5
|
||||||
|
Author: Stefan Bader <stefan.bader@canonical.com>
|
||||||
|
Date: Tue Aug 6 12:28:58 2013 +0100
|
||||||
|
|
||||||
|
xen: Use internal interfaces in xenDomainUsedCpus
|
||||||
|
|
||||||
|
Since commit 95e18efd most public interfaces (xenUnified...) obtain
|
||||||
|
a virDomainDefPtr via xenGetDomainDefFor...() which take the unified
|
||||||
|
lock.
|
||||||
|
This is already taken before calling xenDomainUsedCpus(), so we get
|
||||||
|
a deadlock for active guests. Avoid this by splitting up
|
||||||
|
xenUnifiedDomainGetVcpusFlags() and xenUnifiedDomainGetVcpus() into
|
||||||
|
public and private function calls (which get the virDomainDefPtr passed)
|
||||||
|
and use those in xenDomainUsedCpus().
|
||||||
|
|
||||||
|
xenDomainUsedCpus
|
||||||
|
...
|
||||||
|
nb_vcpu = xenUnifiedDomainGetMaxVcpus(dom);
|
||||||
|
return xenUnifiedDomainGetVcpusFlags(...)
|
||||||
|
...
|
||||||
|
if (!(def = xenGetDomainDefForDom(dom)))
|
||||||
|
return xenGetDomainDefForUUID(dom->conn, dom->uuid);
|
||||||
|
...
|
||||||
|
ret = xenHypervisorLookupDomainByUUID(conn, uuid);
|
||||||
|
...
|
||||||
|
xenUnifiedLock(priv);
|
||||||
|
name = xenStoreDomainGetName(conn, id);
|
||||||
|
xenUnifiedUnlock(priv);
|
||||||
|
...
|
||||||
|
if ((ncpus = xenUnifiedDomainGetVcpus(dom, cpuinfo, nb_vcpu,
|
||||||
|
...
|
||||||
|
if (!(def = xenGetDomainDefForDom(dom)))
|
||||||
|
[again like above]
|
||||||
|
|
||||||
|
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
|
||||||
|
|
||||||
|
Index: libvirt-1.1.1/src/xen/xen_driver.c
|
||||||
|
===================================================================
|
||||||
|
--- libvirt-1.1.1.orig/src/xen/xen_driver.c
|
||||||
|
+++ libvirt-1.1.1/src/xen/xen_driver.c
|
||||||
|
@@ -73,12 +73,19 @@
|
||||||
|
|
||||||
|
static int
|
||||||
|
xenUnifiedNodeGetInfo(virConnectPtr conn, virNodeInfoPtr info);
|
||||||
|
+
|
||||||
|
static int
|
||||||
|
-xenUnifiedDomainGetMaxVcpus(virDomainPtr dom);
|
||||||
|
+xenUnifiedDomainGetVcpusFlagsInternal(virDomainPtr dom,
|
||||||
|
+ virDomainDefPtr def,
|
||||||
|
+ unsigned int flags);
|
||||||
|
+
|
||||||
|
static int
|
||||||
|
-xenUnifiedDomainGetVcpus(virDomainPtr dom,
|
||||||
|
- virVcpuInfoPtr info, int maxinfo,
|
||||||
|
- unsigned char *cpumaps, int maplen);
|
||||||
|
+xenUnifiedDomainGetVcpusInternal(virDomainPtr dom,
|
||||||
|
+ virDomainDefPtr def,
|
||||||
|
+ virVcpuInfoPtr info,
|
||||||
|
+ int maxinfo,
|
||||||
|
+ unsigned char *cpumaps,
|
||||||
|
+ int maplen);
|
||||||
|
|
||||||
|
|
||||||
|
static bool is_privileged = false;
|
||||||
|
@@ -173,6 +180,7 @@ xenNumaInit(virConnectPtr conn) {
|
||||||
|
/**
|
||||||
|
* xenDomainUsedCpus:
|
||||||
|
* @dom: the domain
|
||||||
|
+ * @def: the domain definition
|
||||||
|
*
|
||||||
|
* Analyze which set of CPUs are used by the domain and
|
||||||
|
* return a string providing the ranges.
|
||||||
|
@@ -181,7 +189,7 @@ xenNumaInit(virConnectPtr conn) {
|
||||||
|
* NULL if the domain uses all CPU or in case of error.
|
||||||
|
*/
|
||||||
|
char *
|
||||||
|
-xenDomainUsedCpus(virDomainPtr dom)
|
||||||
|
+xenDomainUsedCpus(virDomainPtr dom, virDomainDefPtr def)
|
||||||
|
{
|
||||||
|
char *res = NULL;
|
||||||
|
int ncpus;
|
||||||
|
@@ -202,7 +210,9 @@ xenDomainUsedCpus(virDomainPtr dom)
|
||||||
|
|
||||||
|
if (priv->nbNodeCpus <= 0)
|
||||||
|
return NULL;
|
||||||
|
- nb_vcpu = xenUnifiedDomainGetMaxVcpus(dom);
|
||||||
|
+ nb_vcpu = xenUnifiedDomainGetVcpusFlagsInternal(dom, def,
|
||||||
|
+ (VIR_DOMAIN_VCPU_LIVE |
|
||||||
|
+ VIR_DOMAIN_VCPU_MAXIMUM));
|
||||||
|
if (nb_vcpu <= 0)
|
||||||
|
return NULL;
|
||||||
|
if (xenUnifiedNodeGetInfo(dom->conn, &nodeinfo) < 0)
|
||||||
|
@@ -217,8 +227,8 @@ xenDomainUsedCpus(virDomainPtr dom)
|
||||||
|
VIR_ALLOC_N(cpumap, nb_vcpu * cpumaplen) < 0)
|
||||||
|
goto done;
|
||||||
|
|
||||||
|
- if ((ncpus = xenUnifiedDomainGetVcpus(dom, cpuinfo, nb_vcpu,
|
||||||
|
- cpumap, cpumaplen)) >= 0) {
|
||||||
|
+ if ((ncpus = xenUnifiedDomainGetVcpusInternal(dom, def, cpuinfo, nb_vcpu,
|
||||||
|
+ cpumap, cpumaplen)) >= 0) {
|
||||||
|
for (n = 0; n < ncpus; n++) {
|
||||||
|
for (m = 0; m < priv->nbNodeCpus; m++) {
|
||||||
|
bool used;
|
||||||
|
@@ -1416,54 +1426,62 @@ cleanup:
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
-xenUnifiedDomainGetVcpus(virDomainPtr dom,
|
||||||
|
- virVcpuInfoPtr info, int maxinfo,
|
||||||
|
- unsigned char *cpumaps, int maplen)
|
||||||
|
+xenUnifiedDomainGetVcpusInternal(virDomainPtr dom,
|
||||||
|
+ virDomainDefPtr def,
|
||||||
|
+ virVcpuInfoPtr info,
|
||||||
|
+ int maxinfo,
|
||||||
|
+ unsigned char *cpumaps,
|
||||||
|
+ int maplen)
|
||||||
|
{
|
||||||
|
xenUnifiedPrivatePtr priv = dom->conn->privateData;
|
||||||
|
- virDomainDefPtr def = NULL;
|
||||||
|
int ret = -1;
|
||||||
|
|
||||||
|
- if (!(def = xenGetDomainDefForDom(dom)))
|
||||||
|
- goto cleanup;
|
||||||
|
-
|
||||||
|
- if (virDomainGetVcpusEnsureACL(dom->conn, def) < 0)
|
||||||
|
- goto cleanup;
|
||||||
|
-
|
||||||
|
if (dom->id < 0) {
|
||||||
|
if (priv->xendConfigVersion < XEND_CONFIG_VERSION_3_0_4) {
|
||||||
|
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||||
|
_("Cannot get VCPUs of inactive domain"));
|
||||||
|
- goto cleanup;
|
||||||
|
} else {
|
||||||
|
- ret = xenDaemonDomainGetVcpus(dom->conn, def, info, maxinfo, cpumaps, maplen);
|
||||||
|
+ ret = xenDaemonDomainGetVcpus(dom->conn, def, info, maxinfo,
|
||||||
|
+ cpumaps, maplen);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
- ret = xenHypervisorGetVcpus(dom->conn, def, info, maxinfo, cpumaps, maplen);
|
||||||
|
+ ret = xenHypervisorGetVcpus(dom->conn, def, info, maxinfo, cpumaps,
|
||||||
|
+ maplen);
|
||||||
|
}
|
||||||
|
|
||||||
|
-cleanup:
|
||||||
|
- virDomainDefFree(def);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
-xenUnifiedDomainGetVcpusFlags(virDomainPtr dom, unsigned int flags)
|
||||||
|
+xenUnifiedDomainGetVcpus(virDomainPtr dom,
|
||||||
|
+ virVcpuInfoPtr info, int maxinfo,
|
||||||
|
+ unsigned char *cpumaps, int maplen)
|
||||||
|
{
|
||||||
|
- xenUnifiedPrivatePtr priv = dom->conn->privateData;
|
||||||
|
virDomainDefPtr def = NULL;
|
||||||
|
int ret = -1;
|
||||||
|
|
||||||
|
- virCheckFlags(VIR_DOMAIN_VCPU_LIVE |
|
||||||
|
- VIR_DOMAIN_VCPU_CONFIG |
|
||||||
|
- VIR_DOMAIN_VCPU_MAXIMUM, -1);
|
||||||
|
-
|
||||||
|
if (!(def = xenGetDomainDefForDom(dom)))
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
- if (virDomainGetVcpusFlagsEnsureACL(dom->conn, def) < 0)
|
||||||
|
+ if (virDomainGetVcpusEnsureACL(dom->conn, def) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
+ ret = xenUnifiedDomainGetVcpusInternal(dom, def, info, maxinfo, cpumaps,
|
||||||
|
+ maplen);
|
||||||
|
+
|
||||||
|
+cleanup:
|
||||||
|
+ virDomainDefFree(def);
|
||||||
|
+ return ret;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int
|
||||||
|
+xenUnifiedDomainGetVcpusFlagsInternal(virDomainPtr dom,
|
||||||
|
+ virDomainDefPtr def,
|
||||||
|
+ unsigned int flags)
|
||||||
|
+{
|
||||||
|
+ xenUnifiedPrivatePtr priv = dom->conn->privateData;
|
||||||
|
+ int ret = -1;
|
||||||
|
+
|
||||||
|
if (dom->id < 0) {
|
||||||
|
if (priv->xendConfigVersion < XEND_CONFIG_VERSION_3_0_4)
|
||||||
|
ret = xenXMDomainGetVcpusFlags(dom->conn, def, flags);
|
||||||
|
@@ -1476,6 +1494,27 @@ xenUnifiedDomainGetVcpusFlags(virDomainP
|
||||||
|
ret = xenDaemonDomainGetVcpusFlags(dom->conn, def, flags);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ return ret;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int
|
||||||
|
+xenUnifiedDomainGetVcpusFlags(virDomainPtr dom, unsigned int flags)
|
||||||
|
+{
|
||||||
|
+ virDomainDefPtr def = NULL;
|
||||||
|
+ int ret = -1;
|
||||||
|
+
|
||||||
|
+ virCheckFlags(VIR_DOMAIN_VCPU_LIVE |
|
||||||
|
+ VIR_DOMAIN_VCPU_CONFIG |
|
||||||
|
+ VIR_DOMAIN_VCPU_MAXIMUM, -1);
|
||||||
|
+
|
||||||
|
+ if (!(def = xenGetDomainDefForDom(dom)))
|
||||||
|
+ goto cleanup;
|
||||||
|
+
|
||||||
|
+ if (virDomainGetVcpusFlagsEnsureACL(dom->conn, def) < 0)
|
||||||
|
+ goto cleanup;
|
||||||
|
+
|
||||||
|
+ ret = xenUnifiedDomainGetVcpusFlagsInternal(dom, def, flags);
|
||||||
|
+
|
||||||
|
cleanup:
|
||||||
|
virDomainDefFree(def);
|
||||||
|
return ret;
|
||||||
|
@@ -1507,7 +1546,7 @@ xenUnifiedDomainGetXMLDesc(virDomainPtr
|
||||||
|
} else {
|
||||||
|
char *cpus;
|
||||||
|
xenUnifiedLock(priv);
|
||||||
|
- cpus = xenDomainUsedCpus(dom);
|
||||||
|
+ cpus = xenDomainUsedCpus(dom, minidef);
|
||||||
|
xenUnifiedUnlock(priv);
|
||||||
|
def = xenDaemonDomainGetXMLDesc(dom->conn, minidef, cpus);
|
||||||
|
VIR_FREE(cpus);
|
||||||
|
Index: libvirt-1.1.1/src/xen/xen_driver.h
|
||||||
|
===================================================================
|
||||||
|
--- libvirt-1.1.1.orig/src/xen/xen_driver.h
|
||||||
|
+++ libvirt-1.1.1/src/xen/xen_driver.h
|
||||||
|
@@ -187,7 +187,7 @@ struct _xenUnifiedPrivate {
|
||||||
|
|
||||||
|
typedef struct _xenUnifiedPrivate *xenUnifiedPrivatePtr;
|
||||||
|
|
||||||
|
-char *xenDomainUsedCpus(virDomainPtr dom);
|
||||||
|
+char *xenDomainUsedCpus(virDomainPtr dom, virDomainDefPtr def);
|
||||||
|
|
||||||
|
virDomainXMLOptionPtr xenDomainXMLConfInit(void);
|
||||||
|
|
@ -12,7 +12,7 @@ Index: libvirt-1.1.1/src/xen/xend_internal.c
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- libvirt-1.1.1.orig/src/xen/xend_internal.c
|
--- libvirt-1.1.1.orig/src/xen/xend_internal.c
|
||||||
+++ libvirt-1.1.1/src/xen/xend_internal.c
|
+++ libvirt-1.1.1/src/xen/xend_internal.c
|
||||||
@@ -2207,6 +2207,7 @@ xenDaemonAttachDeviceFlags(virConnectPtr
|
@@ -2206,6 +2206,7 @@ xenDaemonAttachDeviceFlags(virConnectPtr
|
||||||
virBuffer buf = VIR_BUFFER_INITIALIZER;
|
virBuffer buf = VIR_BUFFER_INITIALIZER;
|
||||||
char class[8], ref[80];
|
char class[8], ref[80];
|
||||||
char *target = NULL;
|
char *target = NULL;
|
||||||
@ -20,7 +20,7 @@ Index: libvirt-1.1.1/src/xen/xend_internal.c
|
|||||||
|
|
||||||
virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG, -1);
|
virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG, -1);
|
||||||
|
|
||||||
@@ -2305,8 +2306,18 @@ xenDaemonAttachDeviceFlags(virConnectPtr
|
@@ -2304,8 +2305,18 @@ xenDaemonAttachDeviceFlags(virConnectPtr
|
||||||
}
|
}
|
||||||
|
|
||||||
sexpr = virBufferContentAndReset(&buf);
|
sexpr = virBufferContentAndReset(&buf);
|
||||||
|
@ -1,3 +1,13 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Aug 13 10:47:37 MDT 2013 - jfehlig@suse.com
|
||||||
|
|
||||||
|
- Fix memory corruption in legacy Xen driver
|
||||||
|
0e671a16-CVE-2013-4239.patch
|
||||||
|
bnc#834598
|
||||||
|
- Upstream patches to fix dumpxml in legacy Xen driver
|
||||||
|
9d0557b9-legacy-xen-double-free.patch,
|
||||||
|
d7a45bf2-legacy-xen-dumpxml.patch
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Wed Jul 31 16:53:28 MDT 2013 - jfehlig@suse.com
|
Wed Jul 31 16:53:28 MDT 2013 - jfehlig@suse.com
|
||||||
|
|
||||||
|
@ -405,6 +405,9 @@ Source2: libvirtd-relocation-server.fw
|
|||||||
Source99: baselibs.conf
|
Source99: baselibs.conf
|
||||||
# Upstream patches
|
# Upstream patches
|
||||||
Patch0: bcef0f01-libxl-console.patch
|
Patch0: bcef0f01-libxl-console.patch
|
||||||
|
Patch1: 9d0557b9-legacy-xen-double-free.patch
|
||||||
|
Patch2: d7a45bf2-legacy-xen-dumpxml.patch
|
||||||
|
Patch3: 0e671a16-CVE-2013-4239.patch
|
||||||
# Need to go upstream
|
# Need to go upstream
|
||||||
Patch100: xen-name-for-devid.patch
|
Patch100: xen-name-for-devid.patch
|
||||||
Patch101: clone.patch
|
Patch101: clone.patch
|
||||||
@ -904,6 +907,9 @@ of recent versions of Linux (and other OSes).
|
|||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q
|
||||||
%patch0 -p1
|
%patch0 -p1
|
||||||
|
%patch1 -p1
|
||||||
|
%patch2 -p1
|
||||||
|
%patch3 -p1
|
||||||
%patch100 -p1
|
%patch100 -p1
|
||||||
%patch101
|
%patch101
|
||||||
%patch102 -p1
|
%patch102 -p1
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
Adjust libvirtd sysconfig file to conform to SUSE standards
|
Adjust libvirtd sysconfig file to conform to SUSE standards
|
||||||
|
|
||||||
Index: libvirt-1.1.0/daemon/libvirtd.sysconf
|
Index: libvirt-1.1.1/daemon/libvirtd.sysconf
|
||||||
===================================================================
|
===================================================================
|
||||||
--- libvirt-1.1.0.orig/daemon/libvirtd.sysconf
|
--- libvirt-1.1.1.orig/daemon/libvirtd.sysconf
|
||||||
+++ libvirt-1.1.0/daemon/libvirtd.sysconf
|
+++ libvirt-1.1.1/daemon/libvirtd.sysconf
|
||||||
@@ -1,16 +1,25 @@
|
@@ -1,16 +1,25 @@
|
||||||
+## Path: System/Virtualization/libvirt
|
+## Path: System/Virtualization/libvirt
|
||||||
+
|
+
|
||||||
|
@ -27,7 +27,7 @@ Index: libvirt-1.1.1/src/xen/xend_internal.c
|
|||||||
virDomainDeviceDefPtr dev, char *class,
|
virDomainDeviceDefPtr dev, char *class,
|
||||||
char *ref, int ref_len);
|
char *ref, int ref_len);
|
||||||
|
|
||||||
@@ -3316,18 +3316,18 @@ xenDaemonDomainBlockPeek(virConnectPtr c
|
@@ -3314,18 +3314,18 @@ xenDaemonDomainBlockPeek(virConnectPtr c
|
||||||
* Returns 0 in case of success, -1 in case of failure.
|
* Returns 0 in case of success, -1 in case of failure.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
@ -50,7 +50,7 @@ Index: libvirt-1.1.1/src/xen/xend_internal.c
|
|||||||
if (dev->data.disk->driverName &&
|
if (dev->data.disk->driverName &&
|
||||||
STREQ(dev->data.disk->driverName, "tap"))
|
STREQ(dev->data.disk->driverName, "tap"))
|
||||||
strcpy(class, "tap");
|
strcpy(class, "tap");
|
||||||
@@ -3337,19 +3337,17 @@ virDomainXMLDevID(virConnectPtr conn,
|
@@ -3335,19 +3335,17 @@ virDomainXMLDevID(virConnectPtr conn,
|
||||||
else
|
else
|
||||||
strcpy(class, "vbd");
|
strcpy(class, "vbd");
|
||||||
|
|
||||||
@ -81,7 +81,7 @@ Index: libvirt-1.1.1/src/xen/xend_internal.c
|
|||||||
} else if (dev->type == VIR_DOMAIN_DEVICE_NET) {
|
} else if (dev->type == VIR_DOMAIN_DEVICE_NET) {
|
||||||
char mac[VIR_MAC_STRING_BUFLEN];
|
char mac[VIR_MAC_STRING_BUFLEN];
|
||||||
virDomainNetDefPtr netdef = dev->data.net;
|
virDomainNetDefPtr netdef = dev->data.net;
|
||||||
@@ -3357,16 +3355,22 @@ virDomainXMLDevID(virConnectPtr conn,
|
@@ -3355,16 +3353,22 @@ virDomainXMLDevID(virConnectPtr conn,
|
||||||
|
|
||||||
strcpy(class, "vif");
|
strcpy(class, "vif");
|
||||||
|
|
||||||
@ -114,7 +114,7 @@ Index: libvirt-1.1.1/src/xen/xend_internal.c
|
|||||||
} else if (dev->type == VIR_DOMAIN_DEVICE_HOSTDEV &&
|
} else if (dev->type == VIR_DOMAIN_DEVICE_HOSTDEV &&
|
||||||
dev->data.hostdev->mode == VIR_DOMAIN_HOSTDEV_MODE_SUBSYS &&
|
dev->data.hostdev->mode == VIR_DOMAIN_HOSTDEV_MODE_SUBSYS &&
|
||||||
dev->data.hostdev->source.subsys.type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI) {
|
dev->data.hostdev->source.subsys.type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI) {
|
||||||
@@ -3382,17 +3386,44 @@ virDomainXMLDevID(virConnectPtr conn,
|
@@ -3380,17 +3384,44 @@ virDomainXMLDevID(virConnectPtr conn,
|
||||||
|
|
||||||
strcpy(class, "pci");
|
strcpy(class, "pci");
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user