Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package libvirt for openSUSE:Factory checked in at 2021-03-18 22:54:12 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libvirt (Old) and /work/SRC/openSUSE:Factory/.libvirt.new.2401 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libvirt" Thu Mar 18 22:54:12 2021 rev:327 rq:878656 version:7.1.0 Changes: -------- --- /work/SRC/openSUSE:Factory/libvirt/libvirt.changes 2021-03-05 13:43:33.623528607 +0100 +++ /work/SRC/openSUSE:Factory/.libvirt.new.2401/libvirt.changes 2021-03-18 22:54:19.363490787 +0100 @@ -1,0 +2,16 @@ +Fri Mar 12 21:11:17 UTC 2021 - James Fehlig <jfeh...@suse.com> + +- virtlockd, virtlogd: Fix exec-restart + 6b8e9613-avoid-use-after-free.patch, + eab7ae6b-fix-array-access.patch, + c363f03e-virnetdaemon-intro-virNetDaemonQuitExecRestart.patch, + ccc6dd8f-fix-exec-restart.patch + bsc#1183411 + +------------------------------------------------------------------- +Wed Mar 10 18:37:38 UTC 2021 - James Fehlig <jfeh...@suse.com> + +- Replace libxl-default-pcistub-name.patch with upstream variant + ee3dc2c2-libxl-default-pcistub-name.patch + +------------------------------------------------------------------- Old: ---- libxl-default-pcistub-name.patch New: ---- 6b8e9613-avoid-use-after-free.patch c363f03e-virnetdaemon-intro-virNetDaemonQuitExecRestart.patch ccc6dd8f-fix-exec-restart.patch eab7ae6b-fix-array-access.patch ee3dc2c2-libxl-default-pcistub-name.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libvirt.spec ++++++ --- /var/tmp/diff_new_pack.yX0Nio/_old 2021-03-18 22:54:20.603492127 +0100 +++ /var/tmp/diff_new_pack.yX0Nio/_new 2021-03-18 22:54:20.603492127 +0100 @@ -291,10 +291,14 @@ Source99: baselibs.conf Source100: %{name}-rpmlintrc # Upstream patches +Patch0: ee3dc2c2-libxl-default-pcistub-name.patch +Patch1: 6b8e9613-avoid-use-after-free.patch +Patch2: eab7ae6b-fix-array-access.patch +Patch3: c363f03e-virnetdaemon-intro-virNetDaemonQuitExecRestart.patch +Patch4: ccc6dd8f-fix-exec-restart.patch # Patches pending upstream review Patch100: libxl-dom-reset.patch Patch101: network-don-t-use-dhcp-authoritative-on-static-netwo.patch -Patch102: libxl-default-pcistub-name.patch # Need to go upstream Patch150: libvirt-power8-models.patch Patch151: ppc64le-canonical-name.patch ++++++ 0001-libxl-add-support-for-BlockResize-API.patch ++++++ --- /var/tmp/diff_new_pack.yX0Nio/_old 2021-03-18 22:54:20.651492179 +0100 +++ /var/tmp/diff_new_pack.yX0Nio/_new 2021-03-18 22:54:20.651492179 +0100 @@ -120,7 +120,7 @@ static int libxlDomainGetJobInfo(virDomainPtr dom, virDomainJobInfoPtr info) -@@ -6607,6 +6697,7 @@ static virHypervisorDriver libxlHypervis +@@ -6610,6 +6700,7 @@ static virHypervisorDriver libxlHypervis #endif .nodeGetFreeMemory = libxlNodeGetFreeMemory, /* 0.9.0 */ .nodeGetCellsFreeMemory = libxlNodeGetCellsFreeMemory, /* 1.1.1 */ ++++++ 6b8e9613-avoid-use-after-free.patch ++++++ commit 6b8e961399549c5c8fdf06875e5981c564829ad6 Author: Peter Krempa <pkre...@redhat.com> Date: Fri Mar 12 10:12:51 2021 +0100 virLockSpacePreExecRestart: Avoid use-after-free Recent refactor marked 'object' which is returned from the function as autofree but forgot to use g_steal_pointer in the return statement to prevent freeing it. Fixes: 9a1651f64d7 Signed-off-by: Peter Krempa <pkre...@redhat.com> Reviewed-by: Michal Privoznik <mpriv...@redhat.com> Index: libvirt-7.1.0/src/util/virlockspace.c =================================================================== --- libvirt-7.1.0.orig/src/util/virlockspace.c +++ libvirt-7.1.0/src/util/virlockspace.c @@ -472,7 +472,7 @@ virJSONValuePtr virLockSpacePreExecResta goto error; virMutexUnlock(&lockspace->lock); - return object; + return g_steal_pointer(&object); error: virMutexUnlock(&lockspace->lock); ++++++ c363f03e-virnetdaemon-intro-virNetDaemonQuitExecRestart.patch ++++++ commit c363f03e6d0298416179c7f7b24f00da9d85a14f Author: Peter Krempa <pkre...@redhat.com> Date: Wed Mar 10 17:01:23 2021 +0100 virnetdaemon: Introduce virNetDaemonQuitExecRestart Recent changes which meant to fix daemon shutdown broke the exec-restart capability of virtlogd and virtlockd, since the code actually closed all the sockets and shut down all the internals. Add virNetDaemonQuitExecRestart, which requests a shutdown of the process, but keeps all the services open and registered since they are preserved across the restart. Signed-off-by: Peter Krempa <pkre...@redhat.com> Reviewed-by: Michal Privoznik <mpriv...@redhat.com> Index: libvirt-7.1.0/src/libvirt_remote.syms =================================================================== --- libvirt-7.1.0.orig/src/libvirt_remote.syms +++ libvirt-7.1.0/src/libvirt_remote.syms @@ -85,6 +85,7 @@ virNetDaemonNew; virNetDaemonNewPostExecRestart; virNetDaemonPreExecRestart; virNetDaemonQuit; +virNetDaemonQuitExecRestart; virNetDaemonRemoveShutdownInhibition; virNetDaemonRun; virNetDaemonSetShutdownCallbacks; Index: libvirt-7.1.0/src/rpc/virnetdaemon.c =================================================================== --- libvirt-7.1.0.orig/src/rpc/virnetdaemon.c +++ libvirt-7.1.0/src/rpc/virnetdaemon.c @@ -76,6 +76,7 @@ struct _virNetDaemon { bool quit; bool finished; bool graceful; + bool execRestart; unsigned int autoShutdownTimeout; size_t autoShutdownInhibitions; @@ -857,6 +858,10 @@ virNetDaemonRun(virNetDaemonPtr dmn) virHashForEach(dmn->servers, daemonServerProcessClients, NULL); + /* don't shutdown services when performing an exec-restart */ + if (dmn->quit && dmn->execRestart) + goto cleanup; + if (dmn->quit && dmn->finishTimer == -1) { virHashForEach(dmn->servers, daemonServerClose, NULL); if (dmn->shutdownPrepareCb && dmn->shutdownPrepareCb() < 0) @@ -912,6 +917,20 @@ virNetDaemonQuit(virNetDaemonPtr dmn) virObjectUnlock(dmn); } + +void +virNetDaemonQuitExecRestart(virNetDaemon *dmn) +{ + virObjectLock(dmn); + + VIR_DEBUG("Exec-restart requested %p", dmn); + dmn->quit = true; + dmn->execRestart = true; + + virObjectUnlock(dmn); +} + + static int daemonServerClose(void *payload, const char *key G_GNUC_UNUSED, Index: libvirt-7.1.0/src/rpc/virnetdaemon.h =================================================================== --- libvirt-7.1.0.orig/src/rpc/virnetdaemon.h +++ libvirt-7.1.0/src/rpc/virnetdaemon.h @@ -75,6 +75,7 @@ void virNetDaemonSetStateStopWorkerThrea void virNetDaemonRun(virNetDaemonPtr dmn); void virNetDaemonQuit(virNetDaemonPtr dmn); +void virNetDaemonQuitExecRestart(virNetDaemon *dmn); bool virNetDaemonHasClients(virNetDaemonPtr dmn); ++++++ ccc6dd8f-fix-exec-restart.patch ++++++ commit ccc6dd8f11f32f9387fd05de4ad98d61d4e88b69 Author: Peter Krempa <pkre...@redhat.com> Date: Wed Mar 10 17:14:18 2021 +0100 virtlo(g|ck)d: Fix exec-restart Commit 94e45d1042e broke exec-restart of virtlogd and virtlockd as the code waiting for the daemon shutdown closed the daemons before exec-restarting. Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1912243 Fixes: 94e45d1042e Signed-off-by: Peter Krempa <pkre...@redhat.com> Reviewed-by: Michal Privoznik <mpriv...@redhat.com> Index: libvirt-7.1.0/src/locking/lock_daemon.c =================================================================== --- libvirt-7.1.0.orig/src/locking/lock_daemon.c +++ libvirt-7.1.0/src/locking/lock_daemon.c @@ -336,7 +336,7 @@ virLockDaemonExecRestartHandler(virNetDa void *opaque G_GNUC_UNUSED) { execRestart = true; - virNetDaemonQuit(dmn); + virNetDaemonQuitExecRestart(dmn); } static int Index: libvirt-7.1.0/src/logging/log_daemon.c =================================================================== --- libvirt-7.1.0.orig/src/logging/log_daemon.c +++ libvirt-7.1.0/src/logging/log_daemon.c @@ -283,7 +283,7 @@ virLogDaemonExecRestartHandler(virNetDae void *opaque G_GNUC_UNUSED) { execRestart = true; - virNetDaemonQuit(dmn); + virNetDaemonQuitExecRestart(dmn); } static int ++++++ eab7ae6b-fix-array-access.patch ++++++ commit eab7ae6bfe13503ea705e70e32edaa60357cbaa1 Author: Peter Krempa <pkre...@redhat.com> Date: Fri Mar 12 10:16:11 2021 +0100 virLockSpaceNewPostExecRestart: Fix out-of-bounds array access 'res->owners' is allocated to 'res->nOwners' elements, but unfortunately 'res->nOwners' doesn't contain the proper value until after the allocation so 0 elements are allocated. The following loop which assumes that the array has the right number of elements then accesses the pointer out of bounds. The bug was also faithfully converted from VIR_ALLOC_N to g_new0. Fixes: 4a3d6ed5ee0 Signed-off-by: Peter Krempa <pkre...@redhat.com> Reviewed-by: Michal Privoznik <mpriv...@redhat.com> Index: libvirt-7.1.0/src/util/virlockspace.c =================================================================== --- libvirt-7.1.0.orig/src/util/virlockspace.c +++ libvirt-7.1.0/src/util/virlockspace.c @@ -324,7 +324,6 @@ virLockSpacePtr virLockSpaceNewPostExecR const char *tmp; virJSONValuePtr owners; size_t j; - size_t m; res = g_new0(virLockSpaceResource, 1); res->fd = -1; @@ -384,9 +383,8 @@ virLockSpacePtr virLockSpaceNewPostExecR goto error; } - m = virJSONValueArraySize(owners); + res->nOwners = virJSONValueArraySize(owners); res->owners = g_new0(pid_t, res->nOwners); - res->nOwners = m; for (j = 0; j < res->nOwners; j++) { unsigned long long int owner; ++++++ ee3dc2c2-libxl-default-pcistub-name.patch ++++++ commit ee3dc2c2c8e5b2d3976e43dde95bc0aeeafbef4f Author: Jim Fehlig <jfeh...@suse.com> Date: Mon Mar 1 15:41:44 2021 -0700 libxl: Fix node device detach when driver unspecified Commit 887dd0d331 caused a small regression in NodeDeviceDetach in the libxl driver when the 'driver' parameter is not specified. E.g. # virsh nodedev-detach pci_0000_0a_10_0 error: Failed to detach device pci_0000_0a_10_0 error: An error occurred, but the cause is unknown If the driver name is not specified, NULL is passed to virDomainDriverNodeDeviceDetachFlags, in which case virPCIDeviceSetStubDriver is never called to set the stub to pciback. Fix it by setting the driver to "xen" if it is not specified when invoking NodeDeviceDetach. Signed-off-by: Jim Fehlig <jfeh...@suse.com> Reviewed-by: Pavel Hrdina <phrd...@redhat.com> Index: libvirt-7.1.0/src/libxl/libxl_driver.c =================================================================== --- libvirt-7.1.0.orig/src/libxl/libxl_driver.c +++ libvirt-7.1.0/src/libxl/libxl_driver.c @@ -5777,7 +5777,10 @@ libxlNodeDeviceDetachFlags(virNodeDevice virCheckFlags(0, -1); - if (driverName && STRNEQ(driverName, "xen")) { + if (!driverName) + driverName = "xen"; + + if (STRNEQ(driverName, "xen")) { virReportError(VIR_ERR_INVALID_ARG, _("unsupported driver name '%s'"), driverName); return -1; ++++++ libxl-dom-reset.patch ++++++ --- /var/tmp/diff_new_pack.yX0Nio/_old 2021-03-18 22:54:20.771492309 +0100 +++ /var/tmp/diff_new_pack.yX0Nio/_new 2021-03-18 22:54:20.771492309 +0100 @@ -74,7 +74,7 @@ libxlDomainDestroyFlags(virDomainPtr dom, unsigned int flags) { -@@ -6485,6 +6540,7 @@ static virHypervisorDriver libxlHypervis +@@ -6488,6 +6543,7 @@ static virHypervisorDriver libxlHypervis .domainShutdown = libxlDomainShutdown, /* 0.9.0 */ .domainShutdownFlags = libxlDomainShutdownFlags, /* 0.9.10 */ .domainReboot = libxlDomainReboot, /* 0.9.0 */ ++++++ libxl-set-migration-constraints.patch ++++++ --- /var/tmp/diff_new_pack.yX0Nio/_old 2021-03-18 22:54:20.783492322 +0100 +++ /var/tmp/diff_new_pack.yX0Nio/_new 2021-03-18 22:54:20.783492322 +0100 @@ -77,7 +77,7 @@ =================================================================== --- libvirt-7.1.0.orig/src/libxl/libxl_driver.c +++ libvirt-7.1.0/src/libxl/libxl_driver.c -@@ -6047,6 +6047,9 @@ libxlDomainMigratePerform3Params(virDoma +@@ -6050,6 +6050,9 @@ libxlDomainMigratePerform3Params(virDoma const char *dname = NULL; const char *uri = NULL; int ret = -1; @@ -87,7 +87,7 @@ #ifdef LIBXL_HAVE_NO_SUSPEND_RESUME virReportUnsupportedError(); -@@ -6063,6 +6066,15 @@ libxlDomainMigratePerform3Params(virDoma +@@ -6066,6 +6069,15 @@ libxlDomainMigratePerform3Params(virDoma virTypedParamsGetString(params, nparams, VIR_MIGRATE_PARAM_DEST_NAME, &dname) < 0 || @@ -103,7 +103,7 @@ virTypedParamsGetString(params, nparams, VIR_MIGRATE_PARAM_URI, &uri) < 0) -@@ -6077,11 +6089,11 @@ libxlDomainMigratePerform3Params(virDoma +@@ -6080,11 +6092,11 @@ libxlDomainMigratePerform3Params(virDoma if ((flags & (VIR_MIGRATE_TUNNELLED | VIR_MIGRATE_PEER2PEER))) { if (libxlDomainMigrationSrcPerformP2P(driver, vm, dom->conn, dom_xml,