summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_syscalls.c
diff options
context:
space:
mode:
authorarr <arr@FreeBSD.org>2002-03-18 07:45:30 +0000
committerarr <arr@FreeBSD.org>2002-03-18 07:45:30 +0000
commit25a6daa8288f53030d945a2021b249fe06e777bb (patch)
treec2eff913b2ef7378688b056e3fde7b549d509901 /sys/kern/kern_syscalls.c
parenta5aa67ad0898927e353a7f6c1a4d8b3a03bcca39 (diff)
downloadFreeBSD-src-25a6daa8288f53030d945a2021b249fe06e777bb.zip
FreeBSD-src-25a6daa8288f53030d945a2021b249fe06e777bb.tar.gz
- Lock down the ``module'' structure by adding an SX lock that is used by
all the global bits of ``module'' data. This commit adds a few generic macros, MOD_SLOCK, MOD_XLOCK, etc., that are meant to be used as ways of accessing the SX lock. It is also the first step in helping to lock down the kernel linker and module systems. Reviewed by: jhb, jake, smp@
Diffstat (limited to 'sys/kern/kern_syscalls.c')
-rw-r--r--sys/kern/kern_syscalls.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/sys/kern/kern_syscalls.c b/sys/kern/kern_syscalls.c
index 4dd623e..2867bc9 100644
--- a/sys/kern/kern_syscalls.c
+++ b/sys/kern/kern_syscalls.c
@@ -30,6 +30,9 @@
#include <sys/sysproto.h>
#include <sys/sysent.h>
#include <sys/syscall.h>
+#include <sys/lock.h>
+#include <sys/mutex.h>
+#include <sys/sx.h>
#include <sys/module.h>
/*
@@ -96,7 +99,9 @@ syscall_module_handler(struct module *mod, int what, void *arg)
if (error)
return error;
ms.intval = *data->offset;
+ MOD_XLOCK;
module_setspecific(mod, &ms);
+ MOD_XUNLOCK;
if (data->chainevh)
error = data->chainevh(mod, what, data->chainarg);
return error;
OpenPOWER on IntegriCloud