[libvirt] [PATCH 1/4] virt-aa-helper: fix paths for usb hostdevs

Michal Privoznik mprivozn at redhat.com
Fri Sep 29 14:58:12 UTC 2017


On 09/20/2017 04:59 PM, Christian Ehrhardt wrote:
> If users only specified vendor&product (the common case) then parsing
> the xml via virDomainHostdevSubsysUSBDefParseXML would only set these.
> Bus and Device would much later be added when the devices are prepared
> to be added.
> 
> Due to that a hot-add of a usb hostdev works as the device is prepared
> and virt-aa-helper processes the new internal xml. But on an initial
> guest start at the time virt-aa-helper renders the apparmor rules the
> bus/device id's are not set yet:
> 
> p ctl->def->hostdevs[0]->source.subsys.u.usb
> $12 = {autoAddress = false, bus = 0, device = 0, vendor = 1921, product
> = 21888}
> 
> That causes rules to be wrong:
>   "/dev/bus/usb/000/000" rw,
> 
> The fix calls virHostdevFindUSBDevice after reading the XML from
> irt-aa-helper to only add apparmor rules for devices that could be found
> and now are fully known to be able to write the rule correctly.
> 
> It uncondtionally sets virHostdevFindUSBDevice mandatory attribute as
> adding an apparmor rule for a device not found makes no sense no matter
> what startup policy it has set.
> 
> Signed-off-by: Christian Ehrhardt <christian.ehrhardt at canonical.com>
> ---
>  src/security/virt-aa-helper.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/src/security/virt-aa-helper.c b/src/security/virt-aa-helper.c
> index 7944dc1..d1518ea 100644
> --- a/src/security/virt-aa-helper.c
> +++ b/src/security/virt-aa-helper.c
> @@ -55,6 +55,7 @@
>  #include "virrandom.h"
>  #include "virstring.h"
>  #include "virgettext.h"
> +#include "virhostdev.h"
>  
>  #include "storage/storage_source.h"
>  
> @@ -1069,6 +1070,9 @@ get_files(vahControl * ctl)
>                  if (usb == NULL)
>                      continue;
>  
> +                if (virHostdevFindUSBDevice(dev, true, &usb) < 0)
> +                    continue;
> +

Shouldn't we rather fail in this case? Or, what happens if startupPolicy
of the device is set to 'optional'? I think we need to error out here
(although, we've probably errored out earlier in the process).

ACK to the rest of the patches (after some typo clean up, esp. in the
commit messages).

Michal




More information about the libvir-list mailing list