Package: release.debian.org Severity: normal Tags: jessie User: release.debian....@packages.debian.org Usertags: pu
Hi, the I'd like to update libvirt in unstable to fix the broken AppArmor support, a crash during live migration and a error handling problem leading lots of users into the wrong direction. The debdiff is attached and all bugs are already fixed in either sid or experimental (due to the g++ transition). We also have to disable the test suite due to a libxml2 bug. O.k. to upload to p-u? Cheers, -- Guido -- System Information: Debian Release: 8.1 APT prefers stable APT policy: (990, 'stable'), (500, 'stable-updates'), (500, 'unstable'), (500, 'testing'), (1, 'experimental') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 4.1.0-1-amd64 (SMP w/4 CPU cores) Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system)
diff --git a/debian/changelog b/debian/changelog index 5932017..5c79c12 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,24 @@ +libvirt (1.2.9-9+deb8u1) jessie; urgency=medium + + [ Guido Günther ] + * [8e4cf5a] Teach virt-aa-helper to use TEMPLATE.qemu if the domain is kvm + or kqemu. + Thanks to Luke Faraone for the report (Closes: #786650) + * [ad1ff0b] Adjust gbp.conf for jessie + * [c830a54] Disable test suite due to libxml2 bug #781232 in jessie + * [be70aec] Fix crash on live migration + this supplements 07dbec0a64783f644854a22aa0355720f0328d17. + Thanks to Eckebrecht von Pappenheim (Closes: #7788171) + + [ Felix Geyer ] + * [9fb6c59] Allow access to libnl-3 configuration (Closes: #786652) + + [ Daniel P. Berrange ] + * [afae69a] Report original error when QMP probing fails with new QEMU + (Closes: #780093) + + -- Guido Günther <a...@sigxcpu.org> Thu, 13 Aug 2015 15:56:49 +0200 + libvirt (1.2.9-9) unstable; urgency=medium * [4c14b83] qemu: Don't try to parse -help for new QEMU. diff --git a/debian/gbp.conf b/debian/gbp.conf index c97ab1d..3673a45 100644 --- a/debian/gbp.conf +++ b/debian/gbp.conf @@ -1,6 +1,7 @@ [DEFAULT] upstream-branch=upstream/sid -debian-branch=master +debian-branch=debian/jessie +dist=jessie [gbp-pq] patch-numbers = False diff --git a/debian/patches/Allow-access-to-libnl-3-config-files.patch b/debian/patches/Allow-access-to-libnl-3-config-files.patch new file mode 100644 index 0000000..6932e41 --- /dev/null +++ b/debian/patches/Allow-access-to-libnl-3-config-files.patch @@ -0,0 +1,30 @@ +From: Felix Geyer <fge...@debian.org> +Date: Sat, 13 Jun 2015 10:22:40 +0200 +Subject: Allow access to libnl-3 config files + +Closes: #786650 +--- + examples/apparmor/usr.lib.libvirt.virt-aa-helper | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/examples/apparmor/usr.lib.libvirt.virt-aa-helper b/examples/apparmor/usr.lib.libvirt.virt-aa-helper +index bceaaff..60739d0 100644 +--- a/examples/apparmor/usr.lib.libvirt.virt-aa-helper ++++ b/examples/apparmor/usr.lib.libvirt.virt-aa-helper +@@ -16,9 +16,16 @@ + owner @{PROC}/[0-9]*/status r, + @{PROC}/filesystems r, + ++ /etc/libnl-3/classid r, ++ + # for hostdev + /sys/devices/ r, + /sys/devices/** r, ++ deny /dev/sd* r, ++ deny /dev/vd* r, ++ deny /dev/dm-* r, ++ deny /dev/mapper/ r, ++ deny /dev/mapper/* r, + + /usr/lib/libvirt/virt-aa-helper mr, + /sbin/apparmor_parser Ux, diff --git a/debian/patches/Fix-crash-on-live-migration.patch b/debian/patches/Fix-crash-on-live-migration.patch new file mode 100644 index 0000000..9bd259c --- /dev/null +++ b/debian/patches/Fix-crash-on-live-migration.patch @@ -0,0 +1,25 @@ +From: =?utf-8?q?Guido_G=C3=BCnther?= <a...@sigxcpu.org> +Date: Sat, 13 Jun 2015 10:38:26 +0200 +Subject: Fix crash on live migration + +this supplements 07dbec0a64783f644854a22aa0355720f0328d17. + +Closes: #7788171 +Thanks: Eckebrecht von Pappenheim +--- + src/qemu/qemu_migration.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c +index e18556f..87f3f1a 100644 +--- a/src/qemu/qemu_migration.c ++++ b/src/qemu/qemu_migration.c +@@ -2746,7 +2746,7 @@ qemuMigrationPrepareAny(virQEMUDriverPtr driver, + QEMU_ASYNC_JOB_MIGRATION_IN) < 0) + goto stop; + +- if (STREQ(protocol, "rdma") && ++ if (STREQ_NULLABLE(protocol, "rdma") && + virProcessSetMaxMemLock(vm->pid, vm->def->mem.hard_limit << 10) < 0) { + goto stop; + } diff --git a/debian/patches/series b/debian/patches/series index fcb95a0..bac1f34 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -27,3 +27,7 @@ upstream/vbox-fix-a-bug-in-_machineStateInactive.patch security/CVE-2015-0236-qemu-Check-ACLs-when-dumping-security-.patch security/CVE-2015-0236-qemu-Check-ACLs-when-dumping-securi-14.patch qemu-Don-t-try-to-parse-help-for-new-QEM.patch +upstream/Teach-virt-aa-helper-to-use-TEMPLATE.qemu-if-the-dom.patch +Allow-access-to-libnl-3-config-files.patch +Fix-crash-on-live-migration.patch +upstream/Report-original-error-when-QMP-probing-fails-with-ne.patch diff --git a/debian/patches/upstream/Report-original-error-when-QMP-probing-fails-with-ne.patch b/debian/patches/upstream/Report-original-error-when-QMP-probing-fails-with-ne.patch new file mode 100644 index 0000000..1f6dab7 --- /dev/null +++ b/debian/patches/upstream/Report-original-error-when-QMP-probing-fails-with-ne.patch @@ -0,0 +1,182 @@ +From: "Daniel P. Berrange" <berra...@redhat.com> +Date: Mon, 15 Jun 2015 09:04:34 +0200 +Subject: Report original error when QMP probing fails with new QEMU + +If probing capabilities via QMP fails, we now have a check +that prevents us falling back to -help parsing. Unfortunately +the error message + + "Failed to probe capabilities for /usr/bin/qemu-kvm: + unsupported configuration: QEMU 2.1.2 is too new for help parsing" + +is proving rather unhelpful to the user. We need to be telling +them why QMP failed (the root cause), rather than they can't +use -help (the side effect). + +To do this we should capture stderr during QMP probing, and +if -help parsing then sees a new QEMU version, we know that +QMP should have worked, and so we can show the messages from +stderr. The message thus becomes + + "Failed to probe capabilities for /usr/bin/qemu-kvm: + internal error: QEMU / QMP failed: Could not access + KVM kernel module: No such file or directory + failed to initialize KVM: No such file or directory" +--- + src/qemu/qemu_capabilities.c | 37 +++++++++++++++++++++++++++---------- + src/qemu/qemu_capabilities.h | 3 ++- + tests/qemuhelptest.c | 2 +- + 3 files changed, 30 insertions(+), 12 deletions(-) + +diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c +index 9e0158c..b6144ea 100644 +--- a/src/qemu/qemu_capabilities.c ++++ b/src/qemu/qemu_capabilities.c +@@ -1325,7 +1325,8 @@ int virQEMUCapsParseHelpStr(const char *qemu, + unsigned int *version, + bool *is_kvm, + unsigned int *kvm_version, +- bool check_yajl) ++ bool check_yajl, ++ const char *qmperr) + { + unsigned major, minor, micro; + const char *p = help; +@@ -1386,9 +1387,15 @@ int virQEMUCapsParseHelpStr(const char *qemu, + * using QMP probing. + */ + if (*version > 1002000) { +- virReportError(VIR_ERR_CONFIG_UNSUPPORTED, +- _("QEMU %u.%u.%u is too new for help parsing"), +- major, minor, micro); ++ if (qmperr && *qmperr) { ++ virReportError(VIR_ERR_INTERNAL_ERROR, ++ _("QEMU / QMP failed: %s"), ++ qmperr); ++ } else { ++ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, ++ _("QEMU %u.%u.%u is too new for help parsing"), ++ major, minor, micro); ++ } + goto cleanup; + } + +@@ -2933,7 +2940,7 @@ virQEMUCapsInitCached(virQEMUCapsPtr qemuCaps, const char *cacheDir) + #define QEMU_SYSTEM_PREFIX "qemu-system-" + + static int +-virQEMUCapsInitHelp(virQEMUCapsPtr qemuCaps, uid_t runUid, gid_t runGid) ++virQEMUCapsInitHelp(virQEMUCapsPtr qemuCaps, uid_t runUid, gid_t runGid, const char *qmperr) + { + virCommandPtr cmd = NULL; + bool is_kvm; +@@ -2964,7 +2971,8 @@ virQEMUCapsInitHelp(virQEMUCapsPtr qemuCaps, uid_t runUid, gid_t runGid) + &qemuCaps->version, + &is_kvm, + &qemuCaps->kvmVersion, +- false) < 0) ++ false, ++ qmperr) < 0) + goto cleanup; + + /* x86_64 and i686 support PCI-multibus on all machine types +@@ -3215,7 +3223,8 @@ static int + virQEMUCapsInitQMP(virQEMUCapsPtr qemuCaps, + const char *libDir, + uid_t runUid, +- gid_t runGid) ++ gid_t runGid, ++ char **qmperr) + { + int ret = -1; + virCommandPtr cmd = NULL; +@@ -3275,13 +3284,16 @@ virQEMUCapsInitQMP(virQEMUCapsPtr qemuCaps, + virCommandSetGID(cmd, runGid); + virCommandSetUID(cmd, runUid); + ++ virCommandSetErrorBuffer(cmd, qmperr); ++ + /* Log, but otherwise ignore, non-zero status. */ + if (virCommandRun(cmd, &status) < 0) + goto cleanup; + + if (status != 0) { + ret = 0; +- VIR_DEBUG("QEMU %s exited with status %d", qemuCaps->binary, status); ++ VIR_DEBUG("QEMU %s exited with status %d: %s", ++ qemuCaps->binary, status, *qmperr); + goto cleanup; + } + +@@ -3330,6 +3342,8 @@ virQEMUCapsInitQMP(virQEMUCapsPtr qemuCaps, + VIR_ERROR(_("Failed to kill process %lld: %s"), + (long long) pid, + virStrerror(errno, ebuf, sizeof(ebuf))); ++ ++ VIR_FREE(*qmperr); + } + if (pidfile) { + unlink(pidfile); +@@ -3370,6 +3384,7 @@ virQEMUCapsPtr virQEMUCapsNewForBinary(const char *binary, + virQEMUCapsPtr qemuCaps; + struct stat sb; + int rv; ++ char *qmperr = NULL; + + if (!(qemuCaps = virQEMUCapsNew())) + goto error; +@@ -3400,13 +3415,13 @@ virQEMUCapsPtr virQEMUCapsNewForBinary(const char *binary, + goto error; + + if (rv == 0) { +- if (virQEMUCapsInitQMP(qemuCaps, libDir, runUid, runGid) < 0) { ++ if (virQEMUCapsInitQMP(qemuCaps, libDir, runUid, runGid, &qmperr) < 0) { + virQEMUCapsLogProbeFailure(binary); + goto error; + } + + if (!qemuCaps->usedQMP && +- virQEMUCapsInitHelp(qemuCaps, runUid, runGid) < 0) { ++ virQEMUCapsInitHelp(qemuCaps, runUid, runGid, qmperr) < 0) { + virQEMUCapsLogProbeFailure(binary); + goto error; + } +@@ -3415,9 +3430,11 @@ virQEMUCapsPtr virQEMUCapsNewForBinary(const char *binary, + goto error; + } + ++ VIR_FREE(qmperr); + return qemuCaps; + + error: ++ VIR_FREE(qmperr); + virObjectUnref(qemuCaps); + qemuCaps = NULL; + return NULL; +diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h +index a0bb5d3..d8d63a6 100644 +--- a/src/qemu/qemu_capabilities.h ++++ b/src/qemu/qemu_capabilities.h +@@ -302,7 +302,8 @@ int virQEMUCapsParseHelpStr(const char *qemu, + unsigned int *version, + bool *is_kvm, + unsigned int *kvm_version, +- bool check_yajl); ++ bool check_yajl, ++ const char *qmperr); + /* Only for use by test suite */ + int virQEMUCapsParseDeviceStr(virQEMUCapsPtr qemuCaps, const char *str); + +diff --git a/tests/qemuhelptest.c b/tests/qemuhelptest.c +index 975edf3..271fddc 100644 +--- a/tests/qemuhelptest.c ++++ b/tests/qemuhelptest.c +@@ -58,7 +58,7 @@ static int testHelpStrParsing(const void *data) + goto cleanup; + + if (virQEMUCapsParseHelpStr("QEMU", help, flags, +- &version, &is_kvm, &kvm_version, false) == -1) ++ &version, &is_kvm, &kvm_version, false, NULL) == -1) { + goto cleanup; + + # ifndef WITH_YAJL diff --git a/debian/patches/upstream/Teach-virt-aa-helper-to-use-TEMPLATE.qemu-if-the-dom.patch b/debian/patches/upstream/Teach-virt-aa-helper-to-use-TEMPLATE.qemu-if-the-dom.patch new file mode 100644 index 0000000..c128c71 --- /dev/null +++ b/debian/patches/upstream/Teach-virt-aa-helper-to-use-TEMPLATE.qemu-if-the-dom.patch @@ -0,0 +1,41 @@ +From: =?utf-8?q?C=C3=A9dric_Bosdonnat?= <cbosdon...@suse.com> +Date: Tue, 28 Oct 2014 14:42:34 -0600 +Subject: Teach virt-aa-helper to use TEMPLATE.qemu if the domain is kvm or + kqemu + +Closes: #786650 +--- + src/security/virt-aa-helper.c | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) + +diff --git a/src/security/virt-aa-helper.c b/src/security/virt-aa-helper.c +index 9afc8db..1f299a0 100644 +--- a/src/security/virt-aa-helper.c ++++ b/src/security/virt-aa-helper.c +@@ -341,15 +341,25 @@ create_profile(const char *profile, const char *profile_name, + int tlen, plen; + int fd; + int rc = -1; ++ const char *driver_name = NULL; + + if (virFileExists(profile)) { + vah_error(NULL, 0, _("profile exists")); + goto end; + } + ++ switch (virtType) { ++ case VIR_DOMAIN_VIRT_QEMU: ++ case VIR_DOMAIN_VIRT_KQEMU: ++ case VIR_DOMAIN_VIRT_KVM: ++ driver_name = "qemu"; ++ break; ++ default: ++ driver_name = virDomainVirtTypeToString(virtType); ++ } + + if (virAsprintfQuiet(&template, "%s/TEMPLATE.%s", APPARMOR_DIR "/libvirt", +- virDomainVirtTypeToString(virtType)) < 0) { ++ driver_name) < 0) { + vah_error(NULL, 0, _("template name exceeds maximum length")); + goto end; + } diff --git a/debian/rules b/debian/rules index ed80e8d..6812719 100755 --- a/debian/rules +++ b/debian/rules @@ -129,14 +129,7 @@ override_dh_auto_configure: dh_auto_configure -- $(DEB_CONFIGURE_EXTRA_ARGS) override_dh_auto_test: - export LD_PRELOAD=""; \ - export VIR_TEST_DEBUG=1; \ - [ -n "$(MAKE_CHECK)" ] || exit 0; \ - if ! dh_auto_test -O--builddirectory=$(DEB_BUILDDIR); then \ - cat ./debian/build/gnulib/tests/test-suite.log \ - ./debian/build/tests/test-suite.log; \ - exit 1; \ - fi + # Disabled due to #781232 override_dh_install: dh_install