[CRIU] [PATCH 2/2] lsm: get host lsm type from the host mntns
Andrey Vagin
avagin at openvz.org
Mon May 18 11:50:39 PDT 2015
We check files in /sys, so we must do this from host mount namespaces.
Signed-off-by: Andrew Vagin <avagin at openvz.org>
Signed-off-by: Andrey Vagin <avagin at openvz.org>
---
include/lsm.h | 5 +++++
kerndat.c | 5 +++++
lsm.c | 11 +----------
3 files changed, 11 insertions(+), 10 deletions(-)
diff --git a/include/lsm.h b/include/lsm.h
index d3b0c97..05737ff 100644
--- a/include/lsm.h
+++ b/include/lsm.h
@@ -10,6 +10,11 @@
extern Lsmtype host_lsm_type();
/*
+ * Initilize the Lsmtype for the current host
+ */
+extern void kerndat_lsm();
+
+/*
* Read the LSM profile for the pstree item
*/
extern int collect_lsm_profile(pid_t, CredsEntry *);
diff --git a/kerndat.c b/kerndat.c
index 65e2c75..54ba8c7 100644
--- a/kerndat.c
+++ b/kerndat.c
@@ -18,6 +18,7 @@
#include "asm/types.h"
#include "cr_options.h"
#include "util.h"
+#include "lsm.h"
struct kerndat_s kdat = {
.tcp_max_rshare = 3U << 20,
@@ -323,6 +324,8 @@ int kerndat_init(void)
if (!ret)
ret = kerndat_fdinfo_has_lock();
+ kerndat_lsm();
+
return ret;
}
@@ -342,5 +345,7 @@ int kerndat_init_rst(void)
if (!ret)
ret = kerndat_has_memfd_create();
+ kerndat_lsm();
+
return ret;
}
diff --git a/lsm.c b/lsm.c
index 90b395f..5acaa42 100644
--- a/lsm.c
+++ b/lsm.c
@@ -102,7 +102,7 @@ static int selinux_get_label(pid_t pid, char **output)
}
#endif
-static void get_host_lsm()
+void kerndat_lsm()
{
if (access("/sys/kernel/security/apparmor", F_OK) == 0) {
get_label = apparmor_get_label;
@@ -132,17 +132,11 @@ static void get_host_lsm()
Lsmtype host_lsm_type()
{
- if (name == NULL)
- get_host_lsm();
-
return lsmtype;
}
int collect_lsm_profile(pid_t pid, CredsEntry *ce)
{
- if (name == NULL)
- get_host_lsm();
-
ce->lsm_profile = NULL;
if (lsmtype == LSMTYPE__NO_LSM)
@@ -162,9 +156,6 @@ extern Lsmtype image_lsm;
int validate_lsm(CredsEntry *ce)
{
- if (name == NULL)
- get_host_lsm();
-
if (image_lsm == LSMTYPE__NO_LSM || image_lsm == lsmtype)
return 0;
--
2.1.0
More information about the CRIU
mailing list