mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 21:55:25 +00:00
qemu: fix improper initialization of cgroupControllers bitmap
virQEMUDriverConfigNew() always initializes the bitmap in its cgroupControllers member to -1 (i.e. all 1's). Prior to commita9331394
, if qemu.conf had a line with "cgroup_controllers", cgroupControllers would get reset to 0 before going through a loop setting a bit for each named cgroup controller. commita9331394
left out the "reset to 0" part, so cgroupControllers would always be -1; if you didn't want a controller included, there was no longer a way to make that happen. This was discovered by users who were using qemu commandline passthrough to use the "input-linux" method of directing keyboard/mouse input to a virtual machine: https://www.redhat.com/archives/vfio-users/2016-April/msg00105.html Here's the first report I found of the problem encountered after upgrading libvirt beyond v2.0.0: https://www.redhat.com/archives/vfio-users/2016-August/msg00053.html Thanks to sL1pKn07 SpinFlo <sl1pkn07@gmail.com> for bringing the problem up in IRC, and then taking the time to do a git bisect and find the patch that started the problem.
This commit is contained in:
parent
94e2be8424
commit
0276015325
@ -613,15 +613,18 @@ int virQEMUDriverConfigLoadFile(virQEMUDriverConfigPtr cfg,
|
||||
&controllers) < 0)
|
||||
goto cleanup;
|
||||
|
||||
for (i = 0; controllers != NULL && controllers[i] != NULL; i++) {
|
||||
int ctl;
|
||||
if ((ctl = virCgroupControllerTypeFromString(controllers[i])) < 0) {
|
||||
virReportError(VIR_ERR_CONF_SYNTAX,
|
||||
_("Unknown cgroup controller '%s'"),
|
||||
controllers[i]);
|
||||
goto cleanup;
|
||||
if (controllers) {
|
||||
cfg-> cgroupControllers = 0;
|
||||
for (i = 0; controllers[i] != NULL; i++) {
|
||||
int ctl;
|
||||
if ((ctl = virCgroupControllerTypeFromString(controllers[i])) < 0) {
|
||||
virReportError(VIR_ERR_CONF_SYNTAX,
|
||||
_("Unknown cgroup controller '%s'"),
|
||||
controllers[i]);
|
||||
goto cleanup;
|
||||
}
|
||||
cfg->cgroupControllers |= (1 << ctl);
|
||||
}
|
||||
cfg->cgroupControllers |= (1 << ctl);
|
||||
}
|
||||
|
||||
if (virConfGetValueStringList(conf, "cgroup_device_acl", false,
|
||||
|
Loading…
Reference in New Issue
Block a user