From 669b28a560bc46a3bb3866c9f01de1261bdfdca1 Mon Sep 17 00:00:00 2001 From: Vitaliy Makkoveev Date: Mon, 28 Oct 2024 10:18:04 +0000 Subject: 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 --- sys/arch/amd64/amd64/mem.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'sys/arch/amd64') diff --git a/sys/arch/amd64/amd64/mem.c b/sys/arch/amd64/amd64/mem.c index 55205417d6b..53db257d2fa 100644 --- a/sys/arch/amd64/amd64/mem.c +++ b/sys/arch/amd64/amd64/mem.c @@ -1,4 +1,4 @@ -/* $OpenBSD: mem.c,v 1.36 2024/06/23 22:08:37 kettenis Exp $ */ +/* $OpenBSD: mem.c,v 1.37 2024/10/28 10:18:02 mvs Exp $ */ /* * Copyright (c) 1988 University of Utah. * Copyright (c) 1982, 1986, 1990, 1993 @@ -51,6 +51,7 @@ #include #include #include +#include #include @@ -84,7 +85,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: -- cgit v1.2.3