diff options
author | Vitaliy Makkoveev <mvs@cvs.openbsd.org> | 2024-10-28 10:18:04 +0000 |
---|---|---|
committer | Vitaliy Makkoveev <mvs@cvs.openbsd.org> | 2024-10-28 10:18:04 +0000 |
commit | 669b28a560bc46a3bb3866c9f01de1261bdfdca1 (patch) | |
tree | 679e86c7d05bfd3e1e3cd6471d2c807aa69f3849 /sys/arch/alpha | |
parent | d4ced6060887d5c0d2ba01ba8712d8c18882845a (diff) |
Unlock KERN_ALLOWKMEM. The `allowkmem' is atomically accessed integer.
Also use atomic_load_int(9) to load `securelevel'. sysctl_securelevel()
is mp-safe, but will be under kernel lock until all existing
`securelevel' loading became mp-safe too.
ok mpi
Diffstat (limited to 'sys/arch/alpha')
-rw-r--r-- | sys/arch/alpha/alpha/mem.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/arch/alpha/alpha/mem.c b/sys/arch/alpha/alpha/mem.c index 42e9f48d50e..88b722f2d2f 100644 --- a/sys/arch/alpha/alpha/mem.c +++ b/sys/arch/alpha/alpha/mem.c @@ -1,4 +1,4 @@ -/* $OpenBSD: mem.c,v 1.35 2024/06/23 22:08:37 kettenis Exp $ */ +/* $OpenBSD: mem.c,v 1.36 2024/10/28 10:18:02 mvs Exp $ */ /* $NetBSD: mem.c,v 1.26 2000/03/29 03:48:20 simonb Exp $ */ /* @@ -51,6 +51,7 @@ #include <sys/msgbuf.h> #include <sys/mman.h> #include <sys/conf.h> +#include <sys/atomic.h> #include <machine/cpu.h> @@ -76,7 +77,8 @@ mmopen(dev_t dev, int flag, int mode, struct proc *p) switch (minor(dev)) { case 0: case 1: - if (securelevel <= 0 || allowkmem) + if (atomic_load_int(&securelevel) <= 0 || + atomic_load_int(&allowkmem)) break; return (EPERM); case 2: |