[libvirt PATCH 0/3] qemu: virtiofs: fixes for session mode

Ján Tomko (3): qemu: virtiofs: do not crash if cgroups are missing qemu: virtiofs: set correct label when creating the socket qemu: virtiofs: error out if getting the group or user name fails src/qemu/qemu_virtiofs.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) -- 2.44.0

On domain startup, qemuSetupCgroupForExtDevices checks if a cgroup controller is present and skips the setup if not. Add a similar check to qemuVirtioFSSetupCgroup to prevent crashing when hotplugging a virtiofs filesystem. Signed-off-by: Ján Tomko <jtomko@redhat.com> --- src/qemu/qemu_virtiofs.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/qemu/qemu_virtiofs.c b/src/qemu/qemu_virtiofs.c index d539d0a192..15dea3bb57 100644 --- a/src/qemu/qemu_virtiofs.c +++ b/src/qemu/qemu_virtiofs.c @@ -353,6 +353,9 @@ qemuVirtioFSSetupCgroup(virDomainObj *vm, pid_t pid = -1; int rc; + if (!cgroup) + return 0; + if (!(pidfile = qemuVirtioFSCreatePidFilename(vm, fs->info.alias))) return -1; -- 2.44.0

Use svirt_t instead of virtd_t, since virtd_t is not available in the session mode and qemu with svirt_t won't be able to talk to unconfined_t socket. Signed-off-by: Ján Tomko <jtomko@redhat.com> --- src/qemu/qemu_virtiofs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qemu/qemu_virtiofs.c b/src/qemu/qemu_virtiofs.c index 15dea3bb57..d80cddd3ba 100644 --- a/src/qemu/qemu_virtiofs.c +++ b/src/qemu/qemu_virtiofs.c @@ -102,7 +102,7 @@ qemuVirtioFSOpenChardev(virQEMUDriver *driver, chrdev->data.nix.listen = true; chrdev->data.nix.path = g_strdup(socket_path); - if (qemuSecuritySetDaemonSocketLabel(driver->securityManager, vm->def) < 0) + if (qemuSecuritySetSocketLabel(driver->securityManager, vm->def) < 0) goto cleanup; fd = qemuOpenChrChardevUNIXSocket(chrdev); if (fd < 0) { -- 2.44.0

Signed-off-by: Ján Tomko <jtomko@redhat.com> --- src/qemu/qemu_virtiofs.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/qemu/qemu_virtiofs.c b/src/qemu/qemu_virtiofs.c index d80cddd3ba..78897d8177 100644 --- a/src/qemu/qemu_virtiofs.c +++ b/src/qemu/qemu_virtiofs.c @@ -388,6 +388,9 @@ qemuVirtioFSPrepareIdMap(virDomainFSDef *fs) username = virGetUserName(euid); groupname = virGetGroupName(egid); + if (!username || !groupname) + return -1; + fs->idmap.uidmap = g_new0(virDomainIdMapEntry, 2); fs->idmap.gidmap = g_new0(virDomainIdMapEntry, 2); -- 2.44.0

On 3/11/24 15:59, Ján Tomko wrote:
Ján Tomko (3): qemu: virtiofs: do not crash if cgroups are missing qemu: virtiofs: set correct label when creating the socket qemu: virtiofs: error out if getting the group or user name fails
src/qemu/qemu_virtiofs.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)
Reviewed-by: Michal Privoznik <mprivozn@redhat.com> Michal
participants (2)
-
Ján Tomko
-
Michal Prívozník