From 6068fcb36172b2f346e8fe2db3c87ebdfe8022e8 Mon Sep 17 00:00:00 2001 From: Sven Vermeulen Date: Wed, 25 Sep 2013 17:51:58 +0200 Subject: [PATCH] Mount sys before trying to mount selinuxfs If /sys is not present, the attempt to mount selinuxfs will of course fail. So we try to mount /sys first (and only if that fails fall back to the /selinux mount point) and then try to mount selinuxfs. Signed-off-by: Sven Vermeulen --- libselinux/src/load_policy.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/libselinux/src/load_policy.c b/libselinux/src/load_policy.c index 10e29b99..e419f1ad 100644 --- a/libselinux/src/load_policy.c +++ b/libselinux/src/load_policy.c @@ -370,8 +370,16 @@ int selinux_init_load_policy(int *enforce) * mount it if present for use in the calls below. */ const char *mntpoint = NULL; - if (mount(SELINUXFS, SELINUXMNT, SELINUXFS, 0, 0) == 0 || errno == EBUSY) { - mntpoint = SELINUXMNT; + /* First make sure /sys is mounted */ + if (mount("sysfs", "/sys", "sysfs", 0, 0) == 0 || errno == EBUSY) { + if (mount(SELINUXFS, SELINUXMNT, SELINUXFS, 0, 0) == 0 || errno == EBUSY) { + mntpoint = SELINUXMNT; + } else { + /* check old mountpoint */ + if (mount(SELINUXFS, OLDSELINUXMNT, SELINUXFS, 0, 0) == 0 || errno == EBUSY) { + mntpoint = OLDSELINUXMNT; + } + } } else { /* check old mountpoint */ if (mount(SELINUXFS, OLDSELINUXMNT, SELINUXFS, 0, 0) == 0 || errno == EBUSY) {