summaryrefslogtreecommitdiff
path: root/sys/arch/alpha
diff options
context:
space:
mode:
authorTheo de Raadt <deraadt@cvs.openbsd.org>2016-09-25 15:23:38 +0000
committerTheo de Raadt <deraadt@cvs.openbsd.org>2016-09-25 15:23:38 +0000
commitad35585b9ffc27f529b70035fcdfe3e2d66d3993 (patch)
tree714a871bb4d04c9a62c9099e614da701fd0b639f /sys/arch/alpha
parent9028f68eb5361d23438fc560643a30d93e49e4d1 (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.c15
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