[Pkg-libvirt-commits] [SCM] Libvirt Debian packaging branch, master, updated. debian/0.7.5-6-4-g1b0670b

Laurent Léonard laurent at open-minds.org
Wed Feb 3 23:34:20 UTC 2010


The following commit has been merged in the master branch:
commit 6fdc00b149dfea4224470cd76a17f5920eadbe64
Author: Laurent Léonard <laurent at open-minds.org>
Date:   Wed Feb 3 23:41:11 2010 +0100

    Drop patches.
    
    0005-Also-look-for-dmi-information-in-sys-class.patch - applied upstream 4c81b0fdc57b23d80b1b4752cd6143d15c02e9c8.
    0007-Implement-path-lookup-for-USB-by-vendor-product.patch - fixed upstream 5073aa994af460e775cb3e548528e28d7660fcc8.
    0008-qemu-Use-log-output-for-pty-assignment-if-info-chard.patch - fixed upstream a0356bcc41470684f4683f86af8eaea0154fd324.
    0009-Fix-QEMU-driver-custom-domain-status-XML-extensions.patch - fixed upstream ed00e45dba56d25f7231283ccfe8e6890b3b88dd.
    0010-Don-t-free-an-uninitalized-pointer-in-update_driver_.patch - fixed upstream 338e7c3c8d5b861f3ad376863519f3496736987e.
    0011-Fix-parsing-of-info-chardev-line-endings.patch - fixed upstream c0a9b6a5338e54b64a4a28415ffbdb6bcc2b38c5.

diff --git a/debian/patches/0001-remove-RHism.diff.patch b/debian/patches/0001-remove-RHism.diff.patch
index 9557090..1c20b77 100644
--- a/debian/patches/0001-remove-RHism.diff.patch
+++ b/debian/patches/0001-remove-RHism.diff.patch
@@ -7,7 +7,7 @@ Subject: [PATCH] remove-RHism.diff
  1 files changed, 1 insertions(+), 1 deletions(-)
 
 diff --git a/tools/virsh.pod b/tools/virsh.pod
-index ee8cc11..d2458f5 100644
+index 10f622f..f76b8e5 100644
 --- a/tools/virsh.pod
 +++ b/tools/virsh.pod
 @@ -34,7 +34,7 @@ the program.
diff --git a/debian/patches/0002-qemu-disable-network.diff.patch b/debian/patches/0002-qemu-disable-network.diff.patch
index eb39b33..a319ea7 100644
--- a/debian/patches/0002-qemu-disable-network.diff.patch
+++ b/debian/patches/0002-qemu-disable-network.diff.patch
@@ -8,10 +8,10 @@ Subject: [PATCH] qemu-disable-network.diff
  2 files changed, 0 insertions(+), 6 deletions(-)
 
 diff --git a/src/Makefile.am b/src/Makefile.am
-index 8ef0e81..f59eb08 100644
+index 3232256..f7a793a 100644
 --- a/src/Makefile.am
 +++ b/src/Makefile.am
-@@ -913,9 +913,6 @@ if WITH_NETWORK
+@@ -923,9 +923,6 @@ if WITH_NETWORK
  	test -z "$(UUID)" || \
  	  sed -i -e "s,</name>,</name>\n  <uuid>$(UUID)</uuid>," \
  	    $(DESTDIR)$(sysconfdir)/libvirt/qemu/networks/default.xml
@@ -22,10 +22,10 @@ index 8ef0e81..f59eb08 100644
  
  uninstall-local::
 diff --git a/src/Makefile.in b/src/Makefile.in
-index 5301dfc..143fe64 100644
+index c244753..06d6d20 100644
 --- a/src/Makefile.in
 +++ b/src/Makefile.in
-@@ -4197,9 +4197,6 @@ install-data-local:
+@@ -4283,9 +4283,6 @@ install-data-local:
  @WITH_NETWORK_TRUE@	test -z "$(UUID)" || \
  @WITH_NETWORK_TRUE@	  sed -i -e "s,</name>,</name>\n  <uuid>$(UUID)</uuid>," \
  @WITH_NETWORK_TRUE@	    $(DESTDIR)$(sysconfdir)/libvirt/qemu/networks/default.xml
diff --git a/debian/patches/0004-fix-Debian-specific-path-to-hvm-loader.patch b/debian/patches/0004-fix-Debian-specific-path-to-hvm-loader.patch
index f3b95d2..b134e48 100644
--- a/debian/patches/0004-fix-Debian-specific-path-to-hvm-loader.patch
+++ b/debian/patches/0004-fix-Debian-specific-path-to-hvm-loader.patch
@@ -12,10 +12,10 @@ Closes: #517059
  5 files changed, 6 insertions(+), 6 deletions(-)
 
 diff --git a/src/xen/xen_hypervisor.c b/src/xen/xen_hypervisor.c
-index 8279a74..5001d91 100644
+index 16c91e1..633f6af 100644
 --- a/src/xen/xen_hypervisor.c
 +++ b/src/xen/xen_hypervisor.c
-@@ -2230,7 +2230,7 @@ xenHypervisorBuildCapabilities(virConnectPtr conn,
+@@ -2288,7 +2288,7 @@ xenHypervisorBuildCapabilities(virConnectPtr conn,
                                                "/usr/lib64/xen/bin/qemu-dm" :
                                                "/usr/lib/xen/bin/qemu-dm"),
                                               (guest_archs[i].hvm ?
diff --git a/debian/patches/0005-Also-look-for-dmi-information-in-sys-class.patch b/debian/patches/0005-Also-look-for-dmi-information-in-sys-class.patch
deleted file mode 100644
index ef42c9d..0000000
--- a/debian/patches/0005-Also-look-for-dmi-information-in-sys-class.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From: =?UTF-8?q?Guido=20G=C3=BCnther?= <agx at sigxcpu.org>
-Date: Thu, 7 Jan 2010 10:13:51 +0100
-Subject: [PATCH] Also look for dmi information in /sys/class
-
-older kernels such as 2.6.26 have it there.
----
- src/node_device/node_device_udev.c |    7 ++++++-
- src/node_device/node_device_udev.h |    1 +
- 2 files changed, 7 insertions(+), 1 deletions(-)
-
-diff --git a/src/node_device/node_device_udev.c b/src/node_device/node_device_udev.c
-index 22c5f2b..7a9c1e5 100644
---- a/src/node_device/node_device_udev.c
-+++ b/src/node_device/node_device_udev.c
-@@ -1407,7 +1407,12 @@ static int udevSetupSystemDev(void)
-     device = udev_device_new_from_syspath(udev, DMI_DEVPATH);
-     if (device == NULL) {
-         VIR_ERROR("Failed to get udev device for syspath '%s'\n", DMI_DEVPATH);
--        goto out;
-+
-+        device = udev_device_new_from_syspath(udev, DMI_DEVPATH_FALLBACK);
-+        if (device == NULL) {
-+            VIR_ERROR("Failed to get udev device for syspath '%s'\n", DMI_DEVPATH_FALLBACK);
-+            goto out;
-+        }
-     }
- 
-     data = &def->caps->data;
-diff --git a/src/node_device/node_device_udev.h b/src/node_device/node_device_udev.h
-index 0fd39ae..6c83412 100644
---- a/src/node_device/node_device_udev.h
-+++ b/src/node_device/node_device_udev.h
-@@ -26,6 +26,7 @@
- #define SYSFS_DATA_SIZE 4096
- #define DRV_STATE_UDEV_MONITOR(ds) ((struct udev_monitor *)((ds)->privateData))
- #define DMI_DEVPATH "/sys/devices/virtual/dmi/id"
-+#define DMI_DEVPATH_FALLBACK "/sys/class/dmi/id"
- #define PROPERTY_FOUND 0
- #define PROPERTY_MISSING 1
- #define PROPERTY_ERROR -1
--- 
diff --git a/debian/patches/0006-Terminate-nc-on-EOF.patch b/debian/patches/0005-Terminate-nc-on-EOF.patch
similarity index 100%
rename from debian/patches/0006-Terminate-nc-on-EOF.patch
rename to debian/patches/0005-Terminate-nc-on-EOF.patch
diff --git a/debian/patches/0007-Implement-path-lookup-for-USB-by-vendor-product.patch b/debian/patches/0007-Implement-path-lookup-for-USB-by-vendor-product.patch
deleted file mode 100644
index 957ff81..0000000
--- a/debian/patches/0007-Implement-path-lookup-for-USB-by-vendor-product.patch
+++ /dev/null
@@ -1,307 +0,0 @@
-From: Cole Robinson <crobinso at redhat.com>
-Date: Wed, 13 Jan 2010 15:50:05 -0500
-Subject: [PATCH] Implement path lookup for USB by vendor:product
-
-Based off how QEMU does it, look through /sys/bus/usb/devices/* for
-matching vendor:product info, and if found, use info from the surrounding
-files to build the device's /dev/bus/usb path.
-
-This fixes USB device assignment by vendor:product when running qemu
-as non-root (well, it should, but for some reason I couldn't reproduce
-the failure people are seeing in [1], but it appears to work properly)
-
-[1] https://bugzilla.redhat.com/show_bug.cgi?id=542450
-
-v2:
-    Drop 'bus.addr only' checks in security drivers
-    Use various util helpers
-
-Signed-off-by: Cole Robinson <crobinso at redhat.com>
----
- po/POTFILES.in                  |    1 +
- src/qemu/qemu_driver.c          |    9 +--
- src/security/security_selinux.c |   25 ++++-----
- src/security/virt-aa-helper.c   |   32 +++++------
- src/util/hostusb.c              |  110 +++++++++++++++++++++++++++++++++++++-
- src/util/hostusb.h              |    4 +-
- 6 files changed, 141 insertions(+), 40 deletions(-)
-
-diff --git a/po/POTFILES.in b/po/POTFILES.in
-index 1ab0859..22e9c3c 100644
---- a/po/POTFILES.in
-+++ b/po/POTFILES.in
-@@ -54,6 +54,7 @@ src/uml/uml_conf.c
- src/uml/uml_driver.c
- src/util/bridge.c
- src/util/conf.c
-+src/util/hostusb.c
- src/util/json.c
- src/util/logging.c
- src/util/pci.c
-diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
-index a6a1a5a..7dfa78f 100644
---- a/src/qemu/qemu_driver.c
-+++ b/src/qemu/qemu_driver.c
-@@ -2099,14 +2099,11 @@ static int qemuDomainSetHostdevUSBOwnership(virConnectPtr conn,
-     struct qemuFileOwner owner = { uid, gid };
-     int ret = -1;
- 
--    /* XXX what todo for USB devs assigned based on product/vendor ? Doom :-( */
--    if (!def->source.subsys.u.usb.bus ||
--        !def->source.subsys.u.usb.device)
--        return 0;
--
-     usbDevice *dev = usbGetDevice(conn,
-                                   def->source.subsys.u.usb.bus,
--                                  def->source.subsys.u.usb.device);
-+                                  def->source.subsys.u.usb.device,
-+                                  def->source.subsys.u.usb.vendor,
-+                                  def->source.subsys.u.usb.product);
- 
-     if (!dev)
-         goto cleanup;
-diff --git a/src/security/security_selinux.c b/src/security/security_selinux.c
-index 000bc8a..cb585ed 100644
---- a/src/security/security_selinux.c
-+++ b/src/security/security_selinux.c
-@@ -481,20 +481,17 @@ SELinuxSetSecurityHostdevLabel(virConnectPtr conn,
- 
-     switch (dev->source.subsys.type) {
-     case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB: {
--        if (dev->source.subsys.u.usb.bus && dev->source.subsys.u.usb.device) {
--            usbDevice *usb = usbGetDevice(conn,
--                                          dev->source.subsys.u.usb.bus,
--                                          dev->source.subsys.u.usb.device);
-+        usbDevice *usb = usbGetDevice(conn,
-+                                      dev->source.subsys.u.usb.bus,
-+                                      dev->source.subsys.u.usb.device,
-+                                      dev->source.subsys.u.usb.vendor,
-+                                      dev->source.subsys.u.usb.product);
- 
--            if (!usb)
--                goto done;
-+        if (!usb)
-+            goto done;
- 
--            ret = usbDeviceFileIterate(conn, usb, SELinuxSetSecurityUSBLabel, vm);
--            usbFreeDevice(conn, usb);
--        } else {
--            /* XXX deal with product/vendor better */
--            ret = 0;
--        }
-+        ret = usbDeviceFileIterate(conn, usb, SELinuxSetSecurityUSBLabel, vm);
-+        usbFreeDevice(conn, usb);
-         break;
-     }
- 
-@@ -556,7 +553,9 @@ SELinuxRestoreSecurityHostdevLabel(virConnectPtr conn,
-     case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB: {
-         usbDevice *usb = usbGetDevice(conn,
-                                       dev->source.subsys.u.usb.bus,
--                                      dev->source.subsys.u.usb.device);
-+                                      dev->source.subsys.u.usb.device,
-+                                      dev->source.subsys.u.usb.vendor,
-+                                      dev->source.subsys.u.usb.product);
- 
-         if (!usb)
-             goto done;
-diff --git a/src/security/virt-aa-helper.c b/src/security/virt-aa-helper.c
-index 35b29ad..3c8b49a 100644
---- a/src/security/virt-aa-helper.c
-+++ b/src/security/virt-aa-helper.c
-@@ -836,24 +836,22 @@ get_files(vahControl * ctl)
-             virDomainHostdevDefPtr dev = ctl->def->hostdevs[i];
-             switch (dev->source.subsys.type) {
-             case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB: {
--                if (dev->source.subsys.u.usb.bus &&
--                    dev->source.subsys.u.usb.device) {
--                    usbDevice *usb = usbGetDevice(NULL,
--                               dev->source.subsys.u.usb.bus,
--                               dev->source.subsys.u.usb.device);
--                    if (usb == NULL)
--                        continue;
--                    rc = usbDeviceFileIterate(NULL, usb,
--                                              file_iterate_cb, &buf);
--                    usbFreeDevice(NULL, usb);
--                    if (rc != 0)
--                        goto clean;
--                    else {
--                        /* TODO: deal with product/vendor better */
--                        rc = 0;
--                    }
--                }
-+                usbDevice *usb = usbGetDevice(NULL,
-+                                          dev->source.subsys.u.usb.bus,
-+                                          dev->source.subsys.u.usb.device,
-+                                          dev->source.subsys.u.usb.vendor,
-+                                          dev->source.subsys.u.usb.product);
-+
-+                if (usb == NULL)
-+                    continue;
-+
-+                rc = usbDeviceFileIterate(NULL, usb,
-+                                          file_iterate_cb, &buf);
-+                usbFreeDevice(NULL, usb);
-+                if (rc != 0)
-+                    goto clean;
-                 break;
-+                }
-             }
- /* TODO: update so files in /sys are readonly
-             case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI: {
-diff --git a/src/util/hostusb.c b/src/util/hostusb.c
-index 07e10b1..8fbb486 100644
---- a/src/util/hostusb.c
-+++ b/src/util/hostusb.c
-@@ -37,9 +37,10 @@
- #include "util.h"
- #include "virterror_internal.h"
- 
-+#define USB_SYSFS "/sys/bus/usb"
- #define USB_DEVFS "/dev/bus/usb/"
--#define USB_ID_LEN 10 /* "XXXX XXXX" */
--#define USB_ADDR_LEN 8 /* "XXX:XXX" */
-+#define USB_ID_LEN 10 /* "1234 5678" */
-+#define USB_ADDR_LEN 8 /* "123:456" */
- 
- struct _usbDevice {
-     unsigned      bus;
-@@ -57,11 +58,108 @@ struct _usbDevice {
-     virReportErrorHelper(conn, VIR_FROM_NONE, code, __FILE__,  \
-                          __FUNCTION__, __LINE__, fmt)
- 
-+static int usbSysReadFile(virConnectPtr conn,
-+                          const char *f_name, const char *d_name,
-+                          int base, unsigned *value)
-+{
-+    int ret = -1, tmp;
-+    char *buf = NULL;
-+    char *filename = NULL;
-+    char *ignore = NULL;
-+
-+    tmp = virAsprintf(&filename, USB_SYSFS "/devices/%s/%s", d_name, f_name);
-+    if (tmp < 0) {
-+        virReportOOMError(conn);
-+        goto error;
-+    }
-+
-+    if (virFileReadAll(filename, 1024, &buf) < 0)
-+        goto error;
-+
-+    if (virStrToLong_ui(buf, &ignore, base, value) < 0) {
-+        usbReportError(conn, VIR_ERR_INTERNAL_ERROR,
-+                       _("Could not parse usb file %s"), filename);
-+        goto error;
-+    }
-+
-+    ret = 0;
-+error:
-+    VIR_FREE(filename);
-+    VIR_FREE(buf);
-+    return ret;
-+}
-+
-+static int usbFindBusByVendor(virConnectPtr conn,
-+                              unsigned vendor, unsigned product,
-+                              unsigned *bus, unsigned *devno)
-+{
-+    DIR *dir = NULL;
-+    int ret = -1, found = 0;
-+    char *ignore = NULL;
-+    struct dirent *de;
-+
-+    dir = opendir(USB_SYSFS "/devices");
-+    if (!dir) {
-+        virReportSystemError(conn, errno,
-+                             _("Could not open directory %s"),
-+                             USB_SYSFS "/devices");
-+        goto error;
-+    }
-+
-+    while ((de = readdir(dir))) {
-+        unsigned found_prod, found_vend;
-+        if (de->d_name[0] == '.' || strchr(de->d_name, ':'))
-+            continue;
-+
-+        if (usbSysReadFile(conn, "idVendor", de->d_name,
-+                           16, &found_vend) < 0)
-+            goto error;
-+        if (usbSysReadFile(conn, "idProduct", de->d_name,
-+                           16, &found_prod) < 0)
-+            goto error;
-+
-+        if (found_prod == product && found_vend == vendor) {
-+            /* Lookup bus.addr info */
-+            char *tmpstr = de->d_name;
-+            unsigned found_bus, found_addr;
-+
-+            if (STREQ(de->d_name, "usb"))
-+                tmpstr += 3;
-+
-+            if (virStrToLong_ui(tmpstr, &ignore, 10, &found_bus) < 0) {
-+                usbReportError(conn, VIR_ERR_INTERNAL_ERROR,
-+                               _("Failed to parse dir name '%s'"),
-+                               de->d_name);
-+                goto error;
-+            }
-+
-+            if (usbSysReadFile(conn, "devnum", de->d_name,
-+                               10, &found_addr) < 0)
-+                goto error;
-+
-+            *bus = found_bus;
-+            *devno = found_addr;
-+            found = 1;
-+            break;
-+        }
-+    }
-+
-+    if (!found)
-+        usbReportError(conn, VIR_ERR_INTERNAL_ERROR,
-+                       _("Did not find USB device %x:%x"), vendor, product);
-+    else
-+        ret = 0;
-+
-+error:
-+    return ret;
-+}
- 
- usbDevice *
- usbGetDevice(virConnectPtr conn,
-              unsigned bus,
--             unsigned devno)
-+             unsigned devno,
-+             unsigned vendor,
-+             unsigned product)
- {
-     usbDevice *dev;
- 
-@@ -70,6 +168,12 @@ usbGetDevice(virConnectPtr conn,
-         return NULL;
-     }
- 
-+    if (vendor) {
-+        /* Look up bus.dev by vendor:product */
-+        if (usbFindBusByVendor(conn, vendor, product, &bus, &devno) < 0)
-+            return NULL;
-+    }
-+
-     dev->bus     = bus;
-     dev->dev     = devno;
- 
-diff --git a/src/util/hostusb.h b/src/util/hostusb.h
-index 7f75c8b..739a4aa 100644
---- a/src/util/hostusb.h
-+++ b/src/util/hostusb.h
-@@ -28,7 +28,9 @@ typedef struct _usbDevice usbDevice;
- 
- usbDevice *usbGetDevice      (virConnectPtr  conn,
-                               unsigned       bus,
--                              unsigned       devno);
-+                              unsigned       devno,
-+                              unsigned       vendor,
-+                              unsigned       product);
- void       usbFreeDevice     (virConnectPtr  conn,
-                               usbDevice     *dev);
- 
--- 
diff --git a/debian/patches/0008-qemu-Use-log-output-for-pty-assignment-if-info-chard.patch b/debian/patches/0008-qemu-Use-log-output-for-pty-assignment-if-info-chard.patch
deleted file mode 100644
index 1cfdd4f..0000000
--- a/debian/patches/0008-qemu-Use-log-output-for-pty-assignment-if-info-chard.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From: Matthias Bolte <matthias.bolte at googlemail.com>
-Date: Mon, 18 Jan 2010 21:04:50 +0100
-Subject: [PATCH] qemu: Use log output for pty assignment if 'info chardev' is unavailable
-
-qemudFindCharDevicePTYsMonitor reports an error if 'info chardev' didn't
-provide information for a requested device, even if the log output parsing
-had found the pty path for that device. This makes pty assignment fail for
-older QEMU/KVM versions. For example KVM 72 on Debian doesn't support
-'info chardev', so qemuMonitorTextGetPtyPaths cannot parse any useful
-information and the hash for device-id-to-pty-path mapping stays empty.
-
-Make qemudFindCharDevicePTYsMonitor report an error only if the log output
-parsing and the 'info chardev' parsing failed to provide the pty path.
----
- src/qemu/qemu_driver.c |   14 +++++++++++---
- 1 files changed, 11 insertions(+), 3 deletions(-)
-
-diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
-index 7dfa78f..9e44b46 100644
---- a/src/qemu/qemu_driver.c
-+++ b/src/qemu/qemu_driver.c
-@@ -1428,9 +1428,17 @@ qemudFindCharDevicePTYsMonitor(virConnectPtr conn,
-                                                                           \
-             const char *path = (const char *) virHashLookup(paths, id);   \
-             if (path == NULL) {                                           \
--                qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR,\
--                                 _("no assigned pty for device %s"), id); \
--                return -1;                                                \
-+                if (chr->data.file.path == NULL) {                        \
-+                    /* neither the log output nor 'info chardev' had a */ \
-+                    /* pty path for this chardev, report an error */      \
-+                    qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR, \
-+                                     _("no assigned pty for device %s"), id);  \
-+                    return -1;                                                 \
-+                } else {                                                  \
-+                    /* 'info chardev' had no pty path for this chardev, */\
-+                    /* but the log output had, so we're fine */           \
-+                    continue;                                             \
-+                }                                                         \
-             }                                                             \
-                                                                           \
-             chr->data.file.path = strdup(path);                           \
--- 
diff --git a/debian/patches/0009-Fix-QEMU-driver-custom-domain-status-XML-extensions.patch b/debian/patches/0009-Fix-QEMU-driver-custom-domain-status-XML-extensions.patch
deleted file mode 100644
index b73ce71..0000000
--- a/debian/patches/0009-Fix-QEMU-driver-custom-domain-status-XML-extensions.patch
+++ /dev/null
@@ -1,181 +0,0 @@
-From: Daniel P. Berrange <berrange at redhat.com>
-Date: Mon, 18 Jan 2010 16:24:25 +0000
-Subject: [PATCH] Fix QEMU driver custom domain status XML extensions
-
-Invoking the virConnectGetCapabilities() method causes the QEMU
-driver to rebuild its internal capabilities object. Unfortunately
-it was forgetting to register the custom domain status XML hooks
-again.
-
-To avoid this kind of error in the future, the code which builds
-capabilities is refactored into one single method, which can be
-called from all locations, ensuring reliable rebuilds.
-
-* src/qemu/qemu_driver.c: Fix rebuilding of capabilities XML and
-  guarentee it is always consistent
----
- src/qemu/qemu_driver.c |  110 +++++++++++++++++++++++-------------------------
- 1 files changed, 53 insertions(+), 57 deletions(-)
-
-diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
-index 9e44b46..0d4833e 100644
---- a/src/qemu/qemu_driver.c
-+++ b/src/qemu/qemu_driver.c
-@@ -885,34 +885,6 @@ qemuReconnectDomains(struct qemud_driver *driver)
- 
- 
- static int
--qemudSecurityCapsInit(virSecurityDriverPtr secdrv,
--                      virCapsPtr caps)
--{
--    const char *doi, *model;
--
--    doi = virSecurityDriverGetDOI(secdrv);
--    model = virSecurityDriverGetModel(secdrv);
--
--    caps->host.secModel.model = strdup(model);
--    if (!caps->host.secModel.model) {
--        virReportOOMError(NULL);
--        return -1;
--    }
--
--    caps->host.secModel.doi = strdup(doi);
--    if (!caps->host.secModel.doi) {
--        virReportOOMError(NULL);
--        return -1;
--    }
--
--    VIR_DEBUG("Initialized caps for security driver \"%s\" with "
--              "DOI \"%s\"", model, doi);
--
--    return 0;
--}
--
--
--static int
- qemudSecurityInit(struct qemud_driver *qemud_drv)
- {
-     int ret;
-@@ -933,15 +905,52 @@ qemudSecurityInit(struct qemud_driver *qemud_drv)
-     qemud_drv->securityDriver = security_drv;
- 
-     VIR_INFO("Initialized security driver %s", security_drv->name);
--
--    /*
--     * Add security policy host caps now that the security driver is
--     * initialized.
--     */
--    return qemudSecurityCapsInit(security_drv, qemud_drv->caps);
-+    return 0;
- }
- 
- 
-+static virCapsPtr
-+qemuCreateCapabilities(virCapsPtr oldcaps,
-+                       virSecurityDriverPtr secDriver)
-+{
-+    virCapsPtr caps;
-+
-+    /* Basic host arch / guest machine capabilities */
-+    if (!(caps = qemudCapsInit(oldcaps))) {
-+        virReportOOMError(NULL);
-+        return NULL;
-+    }
-+
-+    /* Domain XML parser hooks */
-+    caps->privateDataAllocFunc = qemuDomainObjPrivateAlloc;
-+    caps->privateDataFreeFunc = qemuDomainObjPrivateFree;
-+    caps->privateDataXMLFormat = qemuDomainObjPrivateXMLFormat;
-+    caps->privateDataXMLParse = qemuDomainObjPrivateXMLParse;
-+
-+
-+    /* Security driver data */
-+    if (secDriver) {
-+        const char *doi, *model;
-+
-+        doi = virSecurityDriverGetDOI(secDriver);
-+        model = virSecurityDriverGetModel(secDriver);
-+
-+        if (!(caps->host.secModel.model = strdup(model)))
-+            goto no_memory;
-+        if (!(caps->host.secModel.doi = strdup(doi)))
-+            goto no_memory;
-+
-+        VIR_DEBUG("Initialized caps for security driver \"%s\" with "
-+                  "DOI \"%s\"", model, doi);
-+    }
-+
-+    return caps;
-+
-+no_memory:
-+    virReportOOMError(NULL);
-+    virCapabilitiesFree(caps);
-+    return NULL;
-+}
- 
- /**
-  * qemudStartup:
-@@ -1067,13 +1076,12 @@ qemudStartup(int privileged) {
-                  virStrerror(-rc, buf, sizeof(buf)));
-     }
- 
--    if ((qemu_driver->caps = qemudCapsInit(NULL)) == NULL)
--        goto out_of_memory;
-+    if (qemudSecurityInit(qemu_driver) < 0)
-+        goto error;
- 
--    qemu_driver->caps->privateDataAllocFunc = qemuDomainObjPrivateAlloc;
--    qemu_driver->caps->privateDataFreeFunc = qemuDomainObjPrivateFree;
--    qemu_driver->caps->privateDataXMLFormat = qemuDomainObjPrivateXMLFormat;
--    qemu_driver->caps->privateDataXMLParse = qemuDomainObjPrivateXMLParse;
-+    if ((qemu_driver->caps = qemuCreateCapabilities(NULL,
-+                                                    qemu_driver->securityDriver)) == NULL)
-+        goto error;
- 
-     if ((qemu_driver->activePciHostdevs = pciDeviceListNew(NULL)) == NULL)
-         goto error;
-@@ -1097,10 +1105,6 @@ qemudStartup(int privileged) {
-         }
-     }
- 
--    if (qemudSecurityInit(qemu_driver) < 0) {
--        goto error;
--    }
--
-     /* If hugetlbfs is present, then we need to create a sub-directory within
-      * it, since we can't assume the root mount point has permissions that
-      * will let our spawned QEMU instances use it.
-@@ -2859,15 +2863,12 @@ static char *qemudGetCapabilities(virConnectPtr conn) {
-     char *xml = NULL;
- 
-     qemuDriverLock(driver);
--    if ((caps = qemudCapsInit(qemu_driver->caps)) == NULL)
--        goto no_memory;
- 
--    caps->privateDataAllocFunc = qemuDomainObjPrivateAlloc;
--    caps->privateDataFreeFunc = qemuDomainObjPrivateFree;
--
--    if (qemu_driver->securityDriver &&
--        qemudSecurityCapsInit(qemu_driver->securityDriver, caps) < 0)
--        goto no_memory;
-+    if ((caps = qemuCreateCapabilities(qemu_driver->caps,
-+                                       qemu_driver->securityDriver)) == NULL) {
-+        virCapabilitiesFree(caps);
-+        goto cleanup;
-+    }
- 
-     virCapabilitiesFree(qemu_driver->caps);
-     qemu_driver->caps = caps;
-@@ -2879,11 +2880,6 @@ cleanup:
-     qemuDriverUnlock(driver);
- 
-     return xml;
--
--no_memory:
--    virCapabilitiesFree(caps);
--    virReportOOMError(conn);
--    goto cleanup;
- }
- 
- 
--- 
diff --git a/debian/patches/0010-Don-t-free-an-uninitalized-pointer-in-update_driver_.patch b/debian/patches/0010-Don-t-free-an-uninitalized-pointer-in-update_driver_.patch
deleted file mode 100644
index 4729591..0000000
--- a/debian/patches/0010-Don-t-free-an-uninitalized-pointer-in-update_driver_.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From: Matthias Bolte <matthias.bolte at googlemail.com>
-Date: Wed, 23 Dec 2009 21:18:04 +0000
-Subject: [PATCH] Don't free an uninitalized pointer in update_driver_name()
-
-This invalid free results in heap corruption. Some symptoms I saw
-because of this were libvirtd crashing and virt-manager hanging
-while trying to enumerate devices.
-
-Closes: #565983
----
- src/node_device/node_device_driver.c |    4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/node_device/node_device_driver.c b/src/node_device/node_device_driver.c
-index ecbac0f..fbadfca 100644
---- a/src/node_device/node_device_driver.c
-+++ b/src/node_device/node_device_driver.c
-@@ -78,7 +78,7 @@ static int update_driver_name(virConnectPtr conn,
-                               virNodeDeviceObjPtr dev)
- {
-     char *driver_link = NULL;
--    char *devpath;
-+    char *devpath = NULL;
-     char *p;
-     int ret = -1;
- 
-@@ -114,7 +114,7 @@ static int update_driver_name(virConnectPtr conn,
- 
- cleanup:
-     VIR_FREE(driver_link);
--    free(devpath);
-+    VIR_FREE(devpath);
-     return ret;
- }
- #else
--- 
diff --git a/debian/patches/0011-Fix-parsing-of-info-chardev-line-endings.patch b/debian/patches/0011-Fix-parsing-of-info-chardev-line-endings.patch
deleted file mode 100644
index 445a18f..0000000
--- a/debian/patches/0011-Fix-parsing-of-info-chardev-line-endings.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-From: Matthew Booth <mbooth at redhat.com>
-Date: Wed, 6 Jan 2010 17:09:04 +0100
-Subject: [PATCH] Fix parsing of 'info chardev' line endings
-
-This change makes the 'info chardev' parser ignore any trailing
-whitespace on a line. This fixes a specific problem handling a '\r\n'
-line ending.
-
-* src/qemu/qemu_monitor_text.c: Ignore trailing whitespace in
-  'info chardev' output.
----
- src/qemu/qemu_monitor_text.c |   26 +++++++++++++++++---------
- 1 files changed, 17 insertions(+), 9 deletions(-)
-
-diff --git a/src/qemu/qemu_monitor_text.c b/src/qemu/qemu_monitor_text.c
-index ab361c6..5b9ced2 100644
---- a/src/qemu/qemu_monitor_text.c
-+++ b/src/qemu/qemu_monitor_text.c
-@@ -1705,15 +1705,26 @@ int qemuMonitorTextGetPtyPaths(qemuMonitorPtr mon,
-         goto cleanup;
-     }
- 
--    char *pos = reply;                  /* The current start of searching */
--    char *end = pos + strlen(reply);    /* The end of the reply string */
-+    char *pos;                          /* The current start of searching */
-+    char *next = reply;                 /* The start of the next line */
-     char *eol;                   /* The character which ends the current line */
-+    char *end = reply + strlen(reply);  /* The end of the reply string */
-+
-+    while (next) {
-+        pos = next;
- 
--    while (pos < end) {
-         /* Split the output into lines */
-         eol = memchr(pos, '\n', end - pos);
--        if (eol == NULL)
-+        if (eol == NULL) {
-             eol = end;
-+            next = NULL;
-+        } else {
-+            next = eol + 1;
-+        }
-+
-+        /* Ignore all whitespace immediately before eol */
-+        while (eol > pos && c_isspace(*(eol-1)))
-+            eol -= 1;
- 
-         /* Look for 'filename=pty:' */
- #define NEEDLE "filename=pty:"
-@@ -1721,13 +1732,13 @@ int qemuMonitorTextGetPtyPaths(qemuMonitorPtr mon,
- 
-         /* If it's not there we can ignore this line */
-         if (!needle)
--            goto next;
-+            continue;
- 
-         /* id is everthing from the beginning of the line to the ':'
-          * find ':' and turn it into a terminator */
-         char *colon = memchr(pos, ':', needle - pos);
-         if (colon == NULL)
--            goto next;
-+            continue;
-         *colon = '\0';
-         char *id = pos;
- 
-@@ -1747,9 +1758,6 @@ int qemuMonitorTextGetPtyPaths(qemuMonitorPtr mon,
-             goto cleanup;
-         }
- #undef NEEDLE
--
--    next:
--        pos = eol + 1;
-     }
- 
-     ret = 0;
--- 
diff --git a/debian/patches/series b/debian/patches/series
index 4378e8b..15965e7 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -2,10 +2,4 @@
 0002-qemu-disable-network.diff.patch
 0003-allow-libvirt-group-to-access-the-socket.patch
 0004-fix-Debian-specific-path-to-hvm-loader.patch
-0005-Also-look-for-dmi-information-in-sys-class.patch
-0006-Terminate-nc-on-EOF.patch
-0007-Implement-path-lookup-for-USB-by-vendor-product.patch
-0008-qemu-Use-log-output-for-pty-assignment-if-info-chard.patch
-0009-Fix-QEMU-driver-custom-domain-status-XML-extensions.patch
-0010-Don-t-free-an-uninitalized-pointer-in-update_driver_.patch
-0011-Fix-parsing-of-info-chardev-line-endings.patch
+0005-Terminate-nc-on-EOF.patch

-- 
Libvirt Debian packaging



More information about the Pkg-libvirt-commits mailing list