summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSerge Hallyn <serge.hallyn@canonical.com>2011-12-02 13:10:58 -0600
committerEric Blake <eblake@redhat.com>2011-12-02 12:31:51 -0700
commit4cfdbfc46f0a7b777035a5b2af5ecbe7373a7e12 (patch)
treeff63a7de377f5acf7b78cd332ea61167f08b4def
parentfd066925440ba48acc95d8f31b2c98b1cc9d582d (diff)
downloadlibvirt-4cfdbfc46f0a7b777035a5b2af5ecbe7373a7e12.tar.gz
apparmor: allow tunnelled migrations.
The pathname for the pipe for tunnelled migration is unresolvable. The libvirt apparmor driver therefore refuses access, causing migration to fail. If we can't resolve the path, the worst that can happen is that we should have given permission to the file but didn't. Otherwise (especially since this is a /proc/$$/fd/N file) the file is already open and libvirt won't be refused access by apparmor anyway. Also adjust virt-aa-helper to allow access to the *.tunnelmigrate.dest.name files. For more information, see https://launchpad.net/bugs/869553. Signed-off-by: Serge Hallyn <serge.hallyn@canonical.com>
-rw-r--r--src/security/security_apparmor.c7
-rw-r--r--src/security/virt-aa-helper.c4
2 files changed, 8 insertions, 3 deletions
diff --git a/src/security/security_apparmor.c b/src/security/security_apparmor.c
index 299dcc644b..db7e7dc871 100644
--- a/src/security/security_apparmor.c
+++ b/src/security/security_apparmor.c
@@ -38,6 +38,7 @@
#include "virfile.h"
#include "configmake.h"
#include "command.h"
+#include "logging.h"
#define VIR_FROM_THIS VIR_FROM_SECURITY
#define SECURITY_APPARMOR_VOID_DOI "0"
@@ -791,9 +792,9 @@ AppArmorSetImageFDLabel(virSecurityManagerPtr mgr,
}
if (virFileResolveLink(proc, &fd_path) < 0) {
- virSecurityReportError(VIR_ERR_INTERNAL_ERROR,
- "%s", _("could not find path for descriptor"));
- return rc;
+ /* it's a deleted file, presumably. Ignore? */
+ VIR_WARN("could not find path for descriptor %s, skipping", proc);
+ return 0;
}
return reload_profile(mgr, vm, fd_path, true);
diff --git a/src/security/virt-aa-helper.c b/src/security/virt-aa-helper.c
index 14399cce63..4561bb9db4 100644
--- a/src/security/virt-aa-helper.c
+++ b/src/security/virt-aa-helper.c
@@ -1220,6 +1220,10 @@ main(int argc, char **argv)
LOCALSTATEDIR, ctl->def->name);
virBufferAsprintf(&buf, " \"/run/libvirt/**/%s.pid\" rwk,\n",
ctl->def->name);
+ virBufferAsprintf(&buf, " \"%s/run/libvirt/**/*.tunnelmigrate.dest.%s\" rw,\n",
+ LOCALSTATEDIR, ctl->def->name);
+ virBufferAsprintf(&buf, " \"/run/libvirt/**/*.tunnelmigrate.dest.%s\" rw,\n",
+ ctl->def->name);
if (ctl->files)
virBufferAdd(&buf, ctl->files, -1);
}