forked from rpms/libvirt
libvirt-8.4.0-3.el9
- qemu: fd: Fix monitor usage of qemuFDPassDirectGetPath (rhbz#2092856) Resolves: rhbz#2092856
This commit is contained in:
parent
228f4b83ba
commit
07034509ca
@ -0,0 +1,83 @@
|
|||||||
|
From c52ee15b701c207d205b296e535202272ad6a525 Mon Sep 17 00:00:00 2001
|
||||||
|
Message-Id: <c52ee15b701c207d205b296e535202272ad6a525@dist-git>
|
||||||
|
From: Peter Krempa <pkrempa@redhat.com>
|
||||||
|
Date: Fri, 3 Jun 2022 15:49:01 +0200
|
||||||
|
Subject: [PATCH] qemu: fd: Fix monitor usage of qemuFDPassDirectGetPath
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
We need to use the 'name' variable and just overwrite it with the FD
|
||||||
|
number when FDs are passed on the monitor. Otherwise we will read NULL
|
||||||
|
path if the FD is accessed before being passed on the monitor. The idea
|
||||||
|
of this helper is to simplify the monitor code so it would be
|
||||||
|
counterproductive to have other behaviour.
|
||||||
|
|
||||||
|
Fixes the following symptom:
|
||||||
|
|
||||||
|
$ virsh attach-interface cd network default --model virtio
|
||||||
|
error: Failed to attach interface
|
||||||
|
error: internal error: unable to execute QEMU command 'netdev_add': File descriptor named '(null)' has not been found
|
||||||
|
|
||||||
|
Fixes: bca9047906fd73fd30f275dd45b64998fbbcf6de
|
||||||
|
Resolves: https://gitlab.com/libvirt/libvirt/-/issues/318
|
||||||
|
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2092856
|
||||||
|
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
|
||||||
|
Reviewed-by: Ján Tomko <jtomko@redhat.com>
|
||||||
|
(cherry picked from commit 8d3a807a4acce72a9bce50dd6496c7e320cace39)
|
||||||
|
|
||||||
|
https://bugzilla.redhat.com/show_bug.cgi?id=2092856
|
||||||
|
|
||||||
|
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
---
|
||||||
|
src/qemu/qemu_fd.c | 8 +++-----
|
||||||
|
1 file changed, 3 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/qemu/qemu_fd.c b/src/qemu/qemu_fd.c
|
||||||
|
index bc6a37663c..40c8234320 100644
|
||||||
|
--- a/src/qemu/qemu_fd.c
|
||||||
|
+++ b/src/qemu/qemu_fd.c
|
||||||
|
@@ -235,7 +235,6 @@ qemuFDPassGetPath(qemuFDPass *fdpass)
|
||||||
|
|
||||||
|
struct _qemuFDPassDirect {
|
||||||
|
int fd;
|
||||||
|
- char *path;
|
||||||
|
char *name;
|
||||||
|
|
||||||
|
bool passed; /* passed to qemu via monitor */
|
||||||
|
@@ -251,7 +250,6 @@ qemuFDPassDirectFree(qemuFDPassDirect *fdpass)
|
||||||
|
|
||||||
|
VIR_FORCE_CLOSE(fdpass->fd);
|
||||||
|
g_free(fdpass->name);
|
||||||
|
- g_free(fdpass->path);
|
||||||
|
g_free(fdpass);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -295,7 +293,8 @@ qemuFDPassDirectTransferCommand(qemuFDPassDirect *fdpass,
|
||||||
|
return;
|
||||||
|
|
||||||
|
virCommandPassFD(cmd, fdpass->fd, VIR_COMMAND_PASS_FD_CLOSE_PARENT);
|
||||||
|
- fdpass->path = g_strdup_printf("%d", fdpass->fd);
|
||||||
|
+ g_free(fdpass->name);
|
||||||
|
+ fdpass->name = g_strdup_printf("%d", fdpass->fd);
|
||||||
|
fdpass->fd = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -318,7 +317,6 @@ qemuFDPassDirectTransferMonitor(qemuFDPassDirect *fdpass,
|
||||||
|
if (qemuMonitorSendFileHandle(mon, fdpass->name, fdpass->fd) < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
- fdpass->path = g_strdup(fdpass->name);
|
||||||
|
VIR_FORCE_CLOSE(fdpass->fd);
|
||||||
|
fdpass->passed = true;
|
||||||
|
|
||||||
|
@@ -358,5 +356,5 @@ qemuFDPassDirectGetPath(qemuFDPassDirect *fdpass)
|
||||||
|
if (!fdpass)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
- return fdpass->path;
|
||||||
|
+ return fdpass->name;
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.35.1
|
||||||
|
|
@ -228,7 +228,7 @@
|
|||||||
Summary: Library providing a simple virtualization API
|
Summary: Library providing a simple virtualization API
|
||||||
Name: libvirt
|
Name: libvirt
|
||||||
Version: 8.4.0
|
Version: 8.4.0
|
||||||
Release: 2%{?dist}%{?extra_release}
|
Release: 3%{?dist}%{?extra_release}
|
||||||
License: LGPLv2+
|
License: LGPLv2+
|
||||||
URL: https://libvirt.org/
|
URL: https://libvirt.org/
|
||||||
|
|
||||||
@ -240,6 +240,7 @@ Source1: symlinks
|
|||||||
|
|
||||||
Patch1: libvirt-RHEL-Fix-virConnectGetMaxVcpus-output.patch
|
Patch1: libvirt-RHEL-Fix-virConnectGetMaxVcpus-output.patch
|
||||||
Patch2: libvirt-Revert-RHEL-Fix-virConnectGetMaxVcpus-output.patch
|
Patch2: libvirt-Revert-RHEL-Fix-virConnectGetMaxVcpus-output.patch
|
||||||
|
Patch3: libvirt-qemu-fd-Fix-monitor-usage-of-qemuFDPassDirectGetPath.patch
|
||||||
|
|
||||||
Requires: libvirt-daemon = %{version}-%{release}
|
Requires: libvirt-daemon = %{version}-%{release}
|
||||||
Requires: libvirt-daemon-config-network = %{version}-%{release}
|
Requires: libvirt-daemon-config-network = %{version}-%{release}
|
||||||
@ -2145,6 +2146,9 @@ exit 0
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Jun 24 2022 Jiri Denemark <jdenemar@redhat.com> - 8.4.0-3
|
||||||
|
- qemu: fd: Fix monitor usage of qemuFDPassDirectGetPath (rhbz#2092856)
|
||||||
|
|
||||||
* Tue Jun 14 2022 Jiri Denemark <jdenemar@redhat.com> - 8.4.0-2
|
* Tue Jun 14 2022 Jiri Denemark <jdenemar@redhat.com> - 8.4.0-2
|
||||||
- Revert "RHEL: Fix virConnectGetMaxVcpus output" (rhbz#2095260)
|
- Revert "RHEL: Fix virConnectGetMaxVcpus output" (rhbz#2095260)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user