diff options
author | Theo de Raadt <deraadt@cvs.openbsd.org> | 2016-09-25 15:23:38 +0000 |
---|---|---|
committer | Theo de Raadt <deraadt@cvs.openbsd.org> | 2016-09-25 15:23:38 +0000 |
commit | ad35585b9ffc27f529b70035fcdfe3e2d66d3993 (patch) | |
tree | 714a871bb4d04c9a62c9099e614da701fd0b639f /sys/arch/alpha | |
parent | 9028f68eb5361d23438fc560643a30d93e49e4d1 (diff) |
Make a move towards ending 4 decades of kernel snooping.
Add sysctl kern.allowkmem (default 0) which controls the ability to open
/dev/mem or /dev/kmem at securelevel > 0. Over 15 years we converted 99%
of utilities in the tree to operate on sysctl-nodes (either by themselves
or via code hiding in the guts of -lkvm).
pstat -d and -v & procmap are affected and continued use of them will
require kern.allowkmem=1 in /etc/sysctl.conf. acpidump (and it's
buddy sendbug) are affected, but we'll work out a solution soon.
There will be some impact in ports.
ok kettenis guenther
Diffstat (limited to 'sys/arch/alpha')
-rw-r--r-- | sys/arch/alpha/alpha/mem.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/sys/arch/alpha/alpha/mem.c b/sys/arch/alpha/alpha/mem.c index ad3812ae22c..9a971403c36 100644 --- a/sys/arch/alpha/alpha/mem.c +++ b/sys/arch/alpha/alpha/mem.c @@ -1,4 +1,4 @@ -/* $OpenBSD: mem.c,v 1.30 2016/08/15 22:01:59 tedu Exp $ */ +/* $OpenBSD: mem.c,v 1.31 2016/09/25 15:23:36 deraadt Exp $ */ /* $NetBSD: mem.c,v 1.26 2000/03/29 03:48:20 simonb Exp $ */ /* @@ -70,12 +70,18 @@ extern int allowaperture; int mmopen(dev_t dev, int flag, int mode, struct proc *p) { + extern int allowkmem; switch (minor(dev)) { case 0: case 1: + if (securelevel <= 0 || allowkmem) + break; + return (EPERM); + } case 2: - return (0); + case 12: + break; #ifdef APERTURE case 4: if (suser(p, 0) != 0 || !allowaperture) @@ -86,13 +92,12 @@ mmopen(dev_t dev, int flag, int mode, struct proc *p) if (ap_open_count > 0 && allowaperture < 3) return (EPERM); ap_open_count++; - return (0); + break; #endif - case 12: - return (0); default: return (ENXIO); } + return (0); } int |