summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authoraraujo <araujo@FreeBSD.org>2016-02-24 02:34:11 +0000
committeraraujo <araujo@FreeBSD.org>2016-02-24 02:34:11 +0000
commitb357db3ca617d62e83fa0db20ccacbcd001761a6 (patch)
tree18f1f7870fb6232c7f6d464a41ed80aa2ab80889 /sys
parent63b2f3db69ed14038164268fb5c942d5f7a3d8b4 (diff)
downloadFreeBSD-src-b357db3ca617d62e83fa0db20ccacbcd001761a6.zip
FreeBSD-src-b357db3ca617d62e83fa0db20ccacbcd001761a6.tar.gz
MFH: 285685
Add support to the jail framework to be able to mount linsysfs(5) and linprocfs(5). PR: 207179 Requested by: thomas@gibfest.dk Reviewed by: jamie, bapt Approved by: re (gjb) Sponsored by: gandi.net Differential Revision: https://reviews.freebsd.org/D5390
Diffstat (limited to 'sys')
-rw-r--r--sys/compat/linprocfs/linprocfs.c2
-rw-r--r--sys/compat/linsysfs/linsysfs.c2
-rw-r--r--sys/kern/kern_jail.c16
-rw-r--r--sys/sys/jail.h4
4 files changed, 21 insertions, 3 deletions
diff --git a/sys/compat/linprocfs/linprocfs.c b/sys/compat/linprocfs/linprocfs.c
index 6e591e9..9142c93 100644
--- a/sys/compat/linprocfs/linprocfs.c
+++ b/sys/compat/linprocfs/linprocfs.c
@@ -1514,7 +1514,7 @@ linprocfs_uninit(PFS_INIT_ARGS)
return (0);
}
-PSEUDOFS(linprocfs, 1, 0);
+PSEUDOFS(linprocfs, 1, PR_ALLOW_MOUNT_LINPROCFS);
#if defined(__amd64__)
MODULE_DEPEND(linprocfs, linux_common, 1, 1, 1);
#else
diff --git a/sys/compat/linsysfs/linsysfs.c b/sys/compat/linsysfs/linsysfs.c
index 8b5f9b5..4f57526 100644
--- a/sys/compat/linsysfs/linsysfs.c
+++ b/sys/compat/linsysfs/linsysfs.c
@@ -274,7 +274,7 @@ linsysfs_uninit(PFS_INIT_ARGS)
return (0);
}
-PSEUDOFS(linsysfs, 1, 0);
+PSEUDOFS(linsysfs, 1, PR_ALLOW_MOUNT_LINSYSFS);
#if defined(__amd64__)
MODULE_DEPEND(linsysfs, linux_common, 1, 1, 1);
#else
diff --git a/sys/kern/kern_jail.c b/sys/kern/kern_jail.c
index 42c53c0..0d52c7b 100644
--- a/sys/kern/kern_jail.c
+++ b/sys/kern/kern_jail.c
@@ -208,6 +208,8 @@ static char *pr_allow_names[] = {
"allow.mount.procfs",
"allow.mount.tmpfs",
"allow.mount.fdescfs",
+ "allow.mount.linprocfs",
+ "allow.mount.linsysfs",
};
const size_t pr_allow_names_size = sizeof(pr_allow_names);
@@ -225,6 +227,8 @@ static char *pr_allow_nonames[] = {
"allow.mount.noprocfs",
"allow.mount.notmpfs",
"allow.mount.nofdescfs",
+ "allow.mount.nolinprocfs",
+ "allow.mount.nolinsysfs",
};
const size_t pr_allow_nonames_size = sizeof(pr_allow_nonames);
@@ -4315,6 +4319,14 @@ SYSCTL_PROC(_security_jail, OID_AUTO, mount_procfs_allowed,
CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE,
NULL, PR_ALLOW_MOUNT_PROCFS, sysctl_jail_default_allow, "I",
"Processes in jail can mount the procfs file system");
+SYSCTL_PROC(_security_jail, OID_AUTO, mount_linprocfs_allowed,
+ CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE,
+ NULL, PR_ALLOW_MOUNT_LINPROCFS, sysctl_jail_default_allow, "I",
+ "Processes in jail can mount the linprocfs file system");
+SYSCTL_PROC(_security_jail, OID_AUTO, mount_linsysfs_allowed,
+ CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE,
+ NULL, PR_ALLOW_MOUNT_LINSYSFS, sysctl_jail_default_allow, "I",
+ "Processes in jail can mount the linsysfs file system");
SYSCTL_PROC(_security_jail, OID_AUTO, mount_tmpfs_allowed,
CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE,
NULL, PR_ALLOW_MOUNT_TMPFS, sysctl_jail_default_allow, "I",
@@ -4481,6 +4493,10 @@ SYSCTL_JAIL_PARAM(_allow_mount, nullfs, CTLTYPE_INT | CTLFLAG_RW,
"B", "Jail may mount the nullfs file system");
SYSCTL_JAIL_PARAM(_allow_mount, procfs, CTLTYPE_INT | CTLFLAG_RW,
"B", "Jail may mount the procfs file system");
+SYSCTL_JAIL_PARAM(_allow_mount, linprocfs, CTLTYPE_INT | CTLFLAG_RW,
+ "B", "Jail may mount the linprocfs file system");
+SYSCTL_JAIL_PARAM(_allow_mount, linsysfs, CTLTYPE_INT | CTLFLAG_RW,
+ "B", "Jail may mount the linsysfs file system");
SYSCTL_JAIL_PARAM(_allow_mount, tmpfs, CTLTYPE_INT | CTLFLAG_RW,
"B", "Jail may mount the tmpfs file system");
SYSCTL_JAIL_PARAM(_allow_mount, zfs, CTLTYPE_INT | CTLFLAG_RW,
diff --git a/sys/sys/jail.h b/sys/sys/jail.h
index cfe71d8..63f5ab9 100644
--- a/sys/sys/jail.h
+++ b/sys/sys/jail.h
@@ -232,7 +232,9 @@ struct prison_racct {
#define PR_ALLOW_MOUNT_PROCFS 0x0400
#define PR_ALLOW_MOUNT_TMPFS 0x0800
#define PR_ALLOW_MOUNT_FDESCFS 0x1000
-#define PR_ALLOW_ALL 0x1fff
+#define PR_ALLOW_MOUNT_LINPROCFS 0x2000
+#define PR_ALLOW_MOUNT_LINSYSFS 0x4000
+#define PR_ALLOW_ALL 0x7fff
/*
* OSD methods
OpenPOWER on IntegriCloud